Giới thiệu về máy học python

Xin lưu ý. Những học viên hoàn thành thành công khóa học này của IBM có thể nhận được huy hiệu kỹ năng — một chứng chỉ chi tiết, có thể kiểm chứng và kỹ thuật số mô tả kiến ​​thức và kỹ năng mà bạn đã đạt được trong khóa học này. Đăng ký để tìm hiểu thêm, hoàn thành khóa học và nhận huy hiệu của bạn

Khóa học Machine Learning với Python này đi sâu vào kiến ​​thức cơ bản về machine learning bằng Python, một ngôn ngữ lập trình nổi tiếng và dễ tiếp cận. Bạn sẽ tìm hiểu về giám sát so với. học không giám sát, xem xét cách mô hình thống kê liên quan đến học máy và so sánh từng loại

Chúng ta sẽ khám phá nhiều thuật toán phổ biến bao gồm Phân loại, Hồi quy, Phân cụm và Giảm kích thước và các mô hình phổ biến như Chia tách đào tạo/kiểm tra, Lỗi bình phương trung bình gốc [RMSE] và Rừng ngẫu nhiên. Đồng thời, bạn sẽ xem xét các ví dụ thực tế về học máy và xem cách nó ảnh hưởng đến xã hội theo những cách mà bạn có thể không đoán được

Quan trọng nhất, bạn sẽ biến kiến ​​thức lý thuyết của mình thành kỹ năng thực hành bằng cách sử dụng các phòng thí nghiệm thực hành. Hãy sẵn sàng để học nhiều hơn máy của bạn

Chúng ta sẽ khám phá nhiều thuật toán phổ biến bao gồm Phân loại, Hồi quy, Phân cụm và Giảm kích thước và các mô hình phổ biến như Chia tách đào tạo/kiểm tra, Lỗi bình phương trung bình gốc và Rừng ngẫu nhiên

Quan trọng nhất, bạn sẽ biến kiến ​​thức lý thuyết của mình thành kỹ năng thực hành bằng cách sử dụng các phòng thí nghiệm thực hành. Hãy sẵn sàng để học nhiều hơn máy của bạn

Nếu bạn là người mới bắt đầu học máy và đang tìm cách bắt đầu sử dụng Python, hướng dẫn này được thiết kế dành cho bạn

Bắt đầu dự án của bạn với cuốn sách mới của tôi Machine Learning Mastery With Python, bao gồm các hướng dẫn từng bước và các tệp mã nguồn Python cho tất cả các ví dụ

Bắt đầu nào

  • Cập nhật tháng 1/2017. Đã cập nhật để phản ánh các thay đổi đối với API scikit-learning trong phiên bản 0. 18
  • Cập nhật tháng 3/2017. Đã thêm liên kết để giúp thiết lập môi trường Python của bạn
  • Cập nhật tháng 4/2018. Đã thêm một số liên kết hữu ích về tính ngẫu nhiên và dự đoán
  • Cập nhật tháng 9/2018. Đã thêm liên kết đến phiên bản tập dữ liệu được lưu trữ của riêng tôi
  • Cập nhật tháng 2/2019. Đã cập nhật cho sklearn v0. 20, cũng cập nhật lô
  • Cập nhật tháng 10/2019. Đã thêm các liên kết ở cuối các hướng dẫn bổ sung để tiếp tục
  • Cập nhật tháng 11/2019. Đã thêm các ví dụ mã đầy đủ cho từng phần
  • Cập nhật tháng 12/2019. Đã cập nhật các ví dụ để xóa cảnh báo do thay đổi API trong v0. 22
  • Cập nhật tháng 1/2020. Đã cập nhật để xóa đoạn mã cho dây nịt thử nghiệm

Dự án máy học đầu tiên của bạn bằng Python theo từng bước
Ảnh của cosmoflash, một số quyền được bảo lưu.

Làm thế nào để bạn bắt đầu học máy bằng Python?

Cách tốt nhất để học máy học là thiết kế và hoàn thành các dự án nhỏ

Python có thể đáng sợ khi bắt đầu

Python là một ngôn ngữ thông dịch phổ biến và mạnh mẽ. Không giống như R, Python là một ngôn ngữ và nền tảng hoàn chỉnh mà bạn có thể sử dụng cho cả nghiên cứu và phát triển cũng như phát triển các hệ thống sản xuất

Ngoài ra còn có rất nhiều mô-đun và thư viện để lựa chọn, cung cấp nhiều cách để thực hiện từng tác vụ. Nó có thể cảm thấy áp đảo

Cách tốt nhất để bắt đầu sử dụng Python cho máy học là hoàn thành một dự án

  • Nó sẽ buộc bạn phải cài đặt và khởi động trình thông dịch Python [ít nhất là như vậy]
  • Nó sẽ cung cấp cho bạn một cái nhìn toàn cảnh về cách thực hiện từng bước trong một dự án nhỏ
  • Nó sẽ mang lại cho bạn sự tự tin, có thể tiếp tục với các dự án nhỏ của riêng bạn

Người mới bắt đầu cần một dự án nhỏ từ đầu đến cuối

Sách và các khóa học gây khó chịu. Họ cung cấp cho bạn rất nhiều công thức nấu ăn và đoạn trích, nhưng bạn không bao giờ thấy được chúng ăn khớp với nhau như thế nào

Khi bạn đang áp dụng học máy cho bộ dữ liệu của riêng mình, bạn đang làm việc trên một dự án

Một dự án học máy có thể không tuyến tính, nhưng nó có một số bước nổi tiếng

  1. Xác định vấn đề
  2. chuẩn bị dữ liệu
  3. Đánh giá các thuật toán
  4. Cải thiện kết quả
  5. Kết quả hiện tại

Cách tốt nhất để thực sự chấp nhận một nền tảng hoặc công cụ mới là làm việc từ đầu đến cuối thông qua một dự án máy học và trình bày các bước chính. Cụ thể là từ tải dữ liệu, tổng hợp dữ liệu, đánh giá các thuật toán và đưa ra một số dự đoán

Nếu bạn có thể làm điều đó, bạn có một mẫu mà bạn có thể sử dụng trên tập dữ liệu sau tập dữ liệu. Bạn có thể điền vào các khoảng trống chẳng hạn như chuẩn bị thêm dữ liệu và cải thiện các nhiệm vụ kết quả sau này, khi bạn đã tự tin hơn

Xin chào thế giới học máy

Dự án nhỏ tốt nhất để bắt đầu với một công cụ mới là phân loại hoa iris [e. g. bộ dữ liệu mống mắt]

Đây là một dự án tốt vì nó được hiểu rất rõ

  • Các thuộc tính là số nên bạn phải tìm ra cách tải và xử lý dữ liệu
  • Đây là một vấn đề phân loại, cho phép bạn thực hành với một loại thuật toán học có giám sát có lẽ dễ dàng hơn
  • Đây là một vấn đề phân loại nhiều lớp [đa danh nghĩa] có thể yêu cầu một số xử lý chuyên biệt
  • Nó chỉ có 4 thuộc tính và 150 hàng, nghĩa là nó nhỏ và dễ dàng vừa với bộ nhớ [và màn hình hoặc trang A4]
  • Tất cả các thuộc tính số đều ở cùng đơn vị và cùng tỷ lệ, không yêu cầu bất kỳ tỷ lệ hoặc biến đổi đặc biệt nào để bắt đầu

Hãy bắt đầu với dự án máy học hello world của bạn bằng Python

Máy học trong Python. Hướng dẫn từng bước
[bắt đầu tại đây]

Trong phần này, chúng ta sẽ làm việc thông qua một dự án máy học nhỏ từ đầu đến cuối

Dưới đây là tổng quan về những gì chúng ta sẽ đề cập

  1. Cài đặt nền tảng Python và SciPy
  2. Đang tải tập dữ liệu
  3. Tóm tắt tập dữ liệu
  4. Trực quan hóa tập dữ liệu
  5. Đánh giá một số thuật toán
  6. Đưa ra một số dự đoán

Hãy dành thời gian của bạn. Làm việc qua từng bước

Cố gắng tự nhập các lệnh hoặc sao chép và dán các lệnh để tăng tốc mọi thứ

Mọi thắc mắc vui lòng để lại bình luận ở cuối bài viết

Cần trợ giúp về Machine Learning trong Python?

Tham gia khóa học email 2 tuần miễn phí của tôi và khám phá chuẩn bị dữ liệu, thuật toán, v.v. [có mã]

Nhấp để đăng ký ngay và cũng nhận được phiên bản PDF Ebook miễn phí của khóa học

Bắt đầu khóa học nhỏ MIỄN PHÍ của bạn ngay bây giờ

1. Tải xuống, cài đặt và khởi động Python SciPy

Cài đặt nền tảng Python và SciPy trên hệ thống của bạn nếu chưa có

Tôi không muốn trình bày chi tiết về điều này, bởi vì những người khác đã có. Điều này đã khá đơn giản, đặc biệt nếu bạn là nhà phát triển. Nếu bạn cần trợ giúp, hãy đặt câu hỏi trong phần bình luận

1. 1 Cài đặt Thư viện SciPy

Hướng dẫn này giả sử Python phiên bản 2. 7 hoặc 3. 6+

Có 5 thư viện chính mà bạn sẽ cần cài đặt. Dưới đây là danh sách các thư viện Python SciPy cần thiết cho hướng dẫn này

  • scipy
  • cục mịch
  • matplotlib
  • gấu trúc
  • sklearning

Có nhiều cách để cài đặt các thư viện này. Lời khuyên tốt nhất của tôi là chọn một phương pháp sau đó nhất quán trong việc cài đặt từng thư viện

Trang cài đặt scipy cung cấp các hướng dẫn tuyệt vời để cài đặt các thư viện trên trên nhiều nền tảng khác nhau, chẳng hạn như Linux, mac OS X và Windows. Nếu bạn có bất kỳ nghi ngờ hoặc câu hỏi nào, hãy tham khảo hướng dẫn này, nó đã được hàng ngàn người theo dõi

  • Trên Mac OS X, bạn có thể sử dụng macports để cài đặt Python 3. 6 và những thư viện này. Để biết thêm thông tin về macports, xem trang chủ
  • Trên Linux, bạn có thể sử dụng trình quản lý gói của mình, chẳng hạn như yum trên Fedora để cài đặt RPM

Nếu bạn đang dùng Windows hoặc bạn không tự tin, tôi khuyên bạn nên cài đặt phiên bản Anaconda miễn phí bao gồm mọi thứ bạn cần

Ghi chú. Hướng dẫn này giả định rằng bạn có phiên bản scikit-learning 0. 20 hoặc cao hơn được cài đặt

Cần sự giúp đỡ nhiều hơn?

  • Cách thiết lập môi trường Python cho Machine Learning với Anaconda
  • Cách tạo máy ảo Linux để học máy với Python 3

1. 2 Bắt đầu Python và kiểm tra phiên bản

Bạn nên đảm bảo rằng môi trường Python của bạn đã được cài đặt thành công và đang hoạt động như mong đợi

Kịch bản bên dưới sẽ giúp bạn kiểm tra môi trường của mình. Nó nhập từng thư viện cần thiết trong hướng dẫn này và in phiên bản

Mở một dòng lệnh và khởi động trình thông dịch python

1

con trăn

Tôi khuyên bạn nên làm việc trực tiếp với trình thông dịch hoặc viết tập lệnh của bạn và chạy chúng trên dòng lệnh hơn là các trình soạn thảo và IDE lớn. Giữ mọi thứ đơn giản và tập trung vào học máy chứ không phải chuỗi công cụ

Nhập hoặc sao chép và dán đoạn mã sau

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

# Check the versions of libraries

 

# Python version

import sys

print['Python. {}'. format[sys. phiên bản]]

# scipy

nhập scipy

in['scipy. {}'. định dạng[scipy. __version__]]

# numpy

nhập numpy

in['numpy. {}'. định dạng[numpy. __version__]]

# matplotlib

nhập matplotlib

in['matplotlib. {}'. định dạng[matplotlib. __version__]]

#gấu trúc

nhập gấu trúc

in['gấu trúc. {}'. định dạng[gấu trúc. __version__]]

# scikit-học

nhập sklearn

in['sklearn. {}'. định dạng[sklearn. __version__]]

Đây là kết quả tôi nhận được trên máy trạm OS X của mình

1

2

3

4

5

6

7

con trăn. 3. 6. 11 [mặc định, 29 Th06 2020, 13. 22. 26]

[GCC 4. 2. 1 Apple LLVM 9 tương thích. 1. 0 [tiếng kêu-902. 0. 39. 2]]

scipy. 1. 5. 2

cục mịch. 1. 19. 1

matplotlib. 3. 3. 0

gấu trúc. 1. 1. 0

sklearning. 0. 23. 2

So sánh đầu ra ở trên với các phiên bản của bạn

Lý tưởng nhất là các phiên bản của bạn phải phù hợp hoặc mới hơn. Các API không thay đổi nhanh chóng, vì vậy đừng quá lo lắng nếu bạn chậm một vài phiên bản, Mọi thứ trong hướng dẫn này rất có thể sẽ vẫn hoạt động với bạn

Nếu bạn gặp lỗi, hãy dừng lại. Bây giờ là lúc để sửa chữa nó

Nếu bạn không thể chạy đoạn mã trên một cách rõ ràng, bạn sẽ không thể hoàn thành hướng dẫn này

Lời khuyên tốt nhất của tôi là Google tìm kiếm thông báo lỗi của bạn hoặc đăng câu hỏi trên Stack Exchange

2. Tải dữ liệu

Chúng tôi sẽ sử dụng bộ dữ liệu hoa diên vĩ. Bộ dữ liệu này nổi tiếng vì nó được khá nhiều người sử dụng làm bộ dữ liệu “hello world” trong học máy và thống kê

Bộ dữ liệu chứa 150 quan sát về hoa diên vĩ. Có bốn cột đo lường hoa tính bằng centimet. Cột thứ năm là loài hoa được quan sát. Tất cả hoa được quan sát thuộc về một trong ba loài

Bạn có thể tìm hiểu thêm về tập dữ liệu này trên Wikipedia

Trong bước này, chúng tôi sẽ tải dữ liệu mống mắt từ URL tệp CSV

2. 1 Nhập thư viện

Trước tiên, hãy nhập tất cả các mô-đun, chức năng và đối tượng mà chúng ta sẽ sử dụng trong hướng dẫn này

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# Tải thư viện

từ gấu trúc nhập read_csv

từ gấu trúc. vẽ nhập scatter_matrix

từ matplotlib nhập pyplot

từ sklearn. model_selection nhập train_test_split

từ sklearn. model_selection nhập cross_val_score

từ sklearn. model_selection nhập StratifiedKFold

từ sklearn. số liệu nhập classification_report

từ sklearn. số liệu nhập confusion_matrix

từ sklearn. chỉ số nhập accuracy_score

từ sklearn. linear_model nhập LogisticRegression

từ sklearn. cây nhập DecisionTreeClassifier

từ sklearn. hàng xóm nhập KNeighborsClassifier

từ sklearn. discriminant_analysis nhập LinearDiscriminantAnalysis

từ sklearn. naive_bayes nhập GaussianNB

từ sklearn. svm nhập SVC

.. .

Mọi thứ nên tải mà không có lỗi. Nếu bạn gặp lỗi, hãy dừng lại. Bạn cần có một môi trường SciPy hoạt động trước khi tiếp tục. Xem lời khuyên ở trên về cách thiết lập môi trường của bạn

2. 2 Tải tập dữ liệu

Chúng tôi có thể tải dữ liệu trực tiếp từ kho lưu trữ UCI Machine Learning

Chúng tôi đang sử dụng gấu trúc để tải dữ liệu. Bên cạnh đó, chúng tôi cũng sẽ sử dụng gấu trúc để khám phá dữ liệu bằng cả thống kê mô tả và trực quan hóa dữ liệu

Lưu ý rằng chúng tôi đang chỉ định tên của từng cột khi tải dữ liệu. Điều này sẽ giúp ích sau này khi chúng ta khám phá dữ liệu

1

2

3

4

5

.. .

# Tải tập dữ liệu

url = "https. // thô. githubusercontent. com/jbrownlee/Bộ dữ liệu/master/iris. csv"

tên = ['độ dài vách ngăn', 'sepal-width', 'petal-length', 'petal-width', 'class']

tập dữ liệu = read_csv[url, names=names]

Tập dữ liệu sẽ tải mà không gặp sự cố

Nếu bạn gặp vấn đề về mạng, bạn có thể tải xuống iris. csv vào thư mục làm việc của bạn và tải nó bằng cùng một phương thức, thay đổi URL thành tên tệp cục bộ

3. Tóm tắt bộ dữ liệu

Bây giờ là lúc để xem dữ liệu

Trong bước này, chúng ta sẽ xem xét dữ liệu theo một số cách khác nhau

  1. Kích thước của tập dữ liệu
  2. Nhìn trộm dữ liệu
  3. Tóm tắt thống kê của tất cả các thuộc tính
  4. Phân tích dữ liệu theo biến lớp

Đừng lo lắng, mỗi lần xem dữ liệu là một lệnh. Đây là những lệnh hữu ích mà bạn có thể sử dụng lại cho các dự án trong tương lai

3. 1 Kích thước của tập dữ liệu

Chúng ta có thể biết nhanh về số lượng phiên bản [hàng] và bao nhiêu thuộc tính [cột] mà dữ liệu chứa với thuộc tính hình dạng

1

2

3

.. .

# hình dạng

in[tập dữ liệu. hình dạng]

Bạn sẽ thấy 150 trường hợp và 5 thuộc tính

1

[150, 5]

3. 2 Xem nhanh dữ liệu

Bạn cũng nên thực sự quan sát dữ liệu của mình

1

2

3

.. .

# đầu

in[tập dữ liệu. đầu[20]]

Bạn sẽ thấy 20 hàng dữ liệu đầu tiên

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

chiều dài lá đài  chiều rộng lá đài  chiều dài cánh hoa  chiều rộng cánh hoa        lớp

0            5. 1          3. 5           1. 4          0. 2  Iris-setosa

1            4. 9          3. 0           1. 4          0. 2  Iris-setosa

2             4. 7          3. 2           1. 3          0. 2  Iris-setosa

3             4. 6          3. 1           1. 5          0. 2  Iris-setosa

4             5. 0          3. 6           1. 4          0. 2  Iris-setosa

5            5. 4          3. 9           1. 7          0. 4  Iris-setosa

6            4. 6          3. 4           1. 4          0. 3  Iris-setosa

7             5. 0          3. 4           1. 5          0. 2  Iris-setosa

8            4. 4          2. 9           1. 4          0. 2  Iris-setosa

9             4. 9          3. 1           1. 5          0. 1  Iris-setosa

10           5. 4          3. 7           1. 5          0. 2  Iris-setosa

11           4. 8          3. 4           1. 6          0. 2  Iris-setosa

12           4. 8          3. 0           1. 4          0. 1  Iris-setosa

13           4. 3          3. 0           1. 1          0. 1  Iris-setosa

14           5. 8          4. 0           1. 2          0. 2  Iris-setosa

15           5. 7          4. 4           1. 5          0. 4  Iris-setosa

16           5. 4          3. 9           1. 3          0. 4  Iris-setosa

17           5. 1          3. 5           1. 4          0. 3  Iris-setosa

18           5. 7          3. 8           1. 7          0. 3  Iris-setosa

19           5. 1          3. 8           1. 5          0. 3  Iris-setosa

3. 3 Tổng hợp thống kê

Bây giờ chúng ta có thể xem tóm tắt của từng thuộc tính

Điều này bao gồm số lượng, giá trị trung bình, giá trị tối thiểu và tối đa cũng như một số phần trăm

1

2

3

.. .

# mô tả

in[tập dữ liệu. mô tả[]]

Chúng ta có thể thấy rằng tất cả các giá trị số đều có cùng tỷ lệ [cm] và phạm vi tương tự từ 0 đến 8 cm

1

2

3

4

5

6

7

8

9

chiều dài lá đài  chiều rộng lá đài  chiều dài cánh hoa  chiều rộng cánh hoa

đếm    150. 000000   150. 000000    150. 000000   150. 000000

có nghĩa là 5. 843333     3. 054000      3. 758667     1. 198667

std        0. 828066     0. 433594      1. 764420     0. 763161

tối thiểu4. 300000     2. 000000      1. 000000     0. 100000

25%        5. 100000     2. 800000      1. 600000     0. 300000

50%        5. 800000     3. 000000      4. 350000     1. 300000

75%        6. 400000     3. 300000      5. 100000     1. 800000

tối đa        7. 900000     4. 400000      6. 900000     2. 500000

3. 4 Phân bố lớp học

Bây giờ chúng ta hãy xem số lượng thể hiện [hàng] thuộc về mỗi lớp. Chúng ta có thể xem đây là một số tuyệt đối

1

2

3

.. .

# phân bố lớp học

in[tập dữ liệu. nhóm theo['lớp'].kích thước[]]

Chúng ta có thể thấy rằng mỗi lớp có cùng số lượng phiên bản [50 hoặc 33% của tập dữ liệu]

1

2

3

4

tầng lớp

Iris-setosa        50

Iris đa sắc    50

Iris-virginica     50

3. 5 Ví dụ hoàn chỉnh

Để tham khảo, chúng ta có thể liên kết tất cả các yếu tố trước đó lại với nhau thành một tập lệnh duy nhất

Ví dụ đầy đủ được liệt kê dưới đây

1

2

3

4

5

6

7

8

9

10

11

12

13

14

# tổng hợp dữ liệu

từ gấu trúc nhập đọc_csv

# Tải tập dữ liệu

url = "https. // thô. githubusercontent. com/jbrownlee/Bộ dữ liệu/master/iris. csv"

tên = ['độ dài vách ngăn', 'sepal-width', 'petal-length', 'petal-width', 'class']

tập dữ liệu = read_csv[url, names=names]

# hình dạng

in[tập dữ liệu. hình dạng]

# đầu

in[tập dữ liệu. đầu[20]]

# mô tả

in[tập dữ liệu. mô tả[]]

# phân bố lớp học

in[tập dữ liệu. nhóm theo['lớp'].kích thước[]]

4. Trực quan hóa dữ liệu

Bây giờ chúng ta có một ý tưởng cơ bản về dữ liệu. Chúng ta cần mở rộng điều đó với một số hình dung

Chúng ta sẽ xem xét hai loại lô

  1. Biểu đồ đơn biến để hiểu rõ hơn về từng thuộc tính
  2. Biểu đồ đa biến để hiểu rõ hơn về mối quan hệ giữa các thuộc tính

4. 1 Lô đơn biến

Chúng tôi bắt đầu với một số biểu đồ đơn biến, nghĩa là các biểu đồ của từng biến riêng lẻ

Cho rằng các biến đầu vào là số, chúng ta có thể tạo các biểu đồ hộp và râu của mỗi

1

2

3

4

.. .

# hộp và ô ria mép

tập dữ liệu. cốt truyện[loại=', subplots=True, layout=[2,2], sharex=False, sharey=False]

pyplot. hiển thị[]

Điều này cho chúng ta một ý tưởng rõ ràng hơn nhiều về sự phân bố của các thuộc tính đầu vào

Biểu đồ hộp và râu ria cho mỗi biến đầu vào cho bộ dữ liệu hoa diên vĩ

Chúng ta cũng có thể tạo biểu đồ của từng biến đầu vào để có ý tưởng về phân phối

1

2

3

4

.. .

# biểu đồ

tập dữ liệu. lịch sử[]

pyplot. hiển thị[]

Có vẻ như hai trong số các biến đầu vào có phân phối Gaussian. Điều này rất hữu ích cần lưu ý vì chúng ta có thể sử dụng các thuật toán có thể khai thác giả định này

Biểu đồ biểu đồ cho từng biến đầu vào cho bộ dữ liệu hoa diên vĩ

4. 2 lô đa biến

Bây giờ chúng ta có thể xem xét sự tương tác giữa các biến

Đầu tiên, hãy xem biểu đồ phân tán của tất cả các cặp thuộc tính. Điều này có thể hữu ích để phát hiện các mối quan hệ có cấu trúc giữa các biến đầu vào

1

2

3

4

.. .

# ma trận biểu đồ phân tán

scatter_matrix[tập dữ liệu]

pyplot. hiển thị[]

Lưu ý nhóm chéo của một số cặp thuộc tính. Điều này cho thấy một mối tương quan cao và một mối quan hệ có thể dự đoán được

Biểu đồ ma trận phân tán cho từng biến đầu vào cho bộ dữ liệu hoa diên vĩ

4. 3 Ví dụ hoàn chỉnh

Để tham khảo, chúng ta có thể liên kết tất cả các yếu tố trước đó lại với nhau thành một tập lệnh duy nhất

Ví dụ đầy đủ được liệt kê dưới đây

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# trực quan hóa dữ liệu

từ gấu trúc nhập read_csv

từ gấu trúc. vẽ nhập scatter_matrix

từ matplotlib nhập pyplot

# Tải tập dữ liệu

url = "https. // thô. githubusercontent. com/jbrownlee/Bộ dữ liệu/master/iris. csv"

tên = ['độ dài vách ngăn', 'sepal-width', 'petal-length', 'petal-width', 'class']

tập dữ liệu = read_csv[url, names=names]

# hộp và ô ria mép

tập dữ liệu. cốt truyện[loại=', subplots=True, layout=[2,2], sharex=False, sharey=False]

pyplot. hiển thị[]

# biểu đồ

tập dữ liệu. lịch sử[]

pyplot. hiển thị[]

# ma trận biểu đồ phân tán

scatter_matrix[tập dữ liệu]

pyplot. hiển thị[]

5. Đánh giá một số thuật toán

Bây giờ là lúc để tạo một số mô hình dữ liệu và ước tính độ chính xác của chúng trên dữ liệu không nhìn thấy

Đây là những gì chúng ta sẽ đề cập trong bước này

  1. Tách ra một tập dữ liệu xác thực
  2. Thiết lập khai thác thử nghiệm để sử dụng xác thực chéo 10 lần
  3. Xây dựng nhiều mô hình khác nhau để dự đoán các loài từ phép đo hoa
  4. Chọn mô hình tốt nhất

5. 1 Tạo tập dữ liệu xác thực

Chúng ta cần biết rằng mô hình chúng ta tạo ra là tốt

Sau đó, chúng tôi sẽ sử dụng các phương pháp thống kê để ước tính độ chính xác của các mô hình mà chúng tôi tạo trên dữ liệu vô hình. Chúng tôi cũng muốn ước tính cụ thể hơn về độ chính xác của mô hình tốt nhất trên dữ liệu không nhìn thấy bằng cách đánh giá nó trên dữ liệu thực tế chưa nhìn thấy

Nghĩa là, chúng tôi sẽ giữ lại một số dữ liệu mà các thuật toán sẽ không nhìn thấy và chúng tôi sẽ sử dụng dữ liệu này để có ý tưởng thứ hai và độc lập về mức độ chính xác của mô hình tốt nhất.

Chúng tôi sẽ chia tập dữ liệu đã tải thành hai, 80% trong số đó chúng tôi sẽ sử dụng để đào tạo, đánh giá và lựa chọn trong số các mô hình của mình và 20% mà chúng tôi sẽ giữ lại làm tập dữ liệu xác thực

1

2

3

4

5

6

.. .

# Bộ dữ liệu xác thực tách rời

mảng = tập dữ liệu. giá trị

X = mảng[. ,0. 4]

y = mảng[. ,4]

X_train, X_validation, Y_train, Y_validation = train_test_split[X, y, test_size=0.20, random_state=1]

Bây giờ bạn có dữ liệu đào tạo trong X_train và Y_train để chuẩn bị các mô hình và bộ X_validation và Y_validation mà chúng ta có thể sử dụng sau này

Lưu ý rằng chúng tôi đã sử dụng một lát cắt python để chọn các cột trong mảng NumPy. Nếu điều này là mới đối với bạn, bạn có thể muốn xem bài đăng này

  • Cách lập chỉ mục, cắt và định hình lại mảng NumPy cho Machine Learning trong Python

5. 2 Khai thác thử nghiệm

Chúng tôi sẽ sử dụng xác thực chéo 10 lần được phân tầng để ước tính độ chính xác của mô hình

Thao tác này sẽ chia tập dữ liệu của chúng tôi thành 10 phần, đào tạo trên 9 và kiểm tra trên 1 và lặp lại cho tất cả các kết hợp phân tách đào tạo-kiểm tra

Phân tầng có nghĩa là mỗi lần gấp hoặc tách tập dữ liệu sẽ nhằm mục đích có cùng phân phối ví dụ theo lớp như tồn tại trong toàn bộ tập dữ liệu huấn luyện

Để biết thêm về kỹ thuật xác thực chéo k-fold, hãy xem hướng dẫn

  • Giới thiệu nhẹ nhàng về Xác thực chéo k-fold

Chúng tôi đặt hạt giống ngẫu nhiên thông qua đối số Random_state thành một số cố định để đảm bảo rằng mỗi thuật toán được đánh giá trên cùng một phần tách của tập dữ liệu huấn luyện

Hạt giống ngẫu nhiên cụ thể không quan trọng, hãy tìm hiểu thêm về trình tạo số giả ngẫu nhiên tại đây

  • Giới thiệu về Trình tạo số ngẫu nhiên cho Machine Learning trong Python

Chúng tôi đang sử dụng thước đo 'độ chính xác' để đánh giá các mô hình

Đây là tỷ lệ giữa số lượng phiên bản được dự đoán chính xác chia cho tổng số phiên bản trong tập dữ liệu nhân với 100 để đưa ra tỷ lệ phần trăm [e. g. chính xác 95%]. Chúng tôi sẽ sử dụng biến tính điểm khi chúng tôi chạy bản dựng và đánh giá từng mô hình tiếp theo

5. 3 mô hình xây dựng

Chúng tôi không biết thuật toán nào sẽ tốt cho vấn đề này hoặc sử dụng cấu hình nào

Chúng tôi có ý tưởng từ các biểu đồ rằng một số lớp có thể phân tách tuyến tính một phần theo một số chiều, vì vậy chúng tôi đang mong đợi kết quả tốt nói chung

Hãy kiểm tra 6 thuật toán khác nhau

  • Hồi quy logistic [LR]
  • Phân tích phân biệt tuyến tính [LDA]
  • K-Láng giềng gần nhất [KNN]
  • Cây phân loại và hồi quy [GIỎ HÀNG]
  • Gaussian Naive Bayes [NB]
  • Máy véc tơ hỗ trợ [SVM]

Đây là sự kết hợp tốt của các thuật toán tuyến tính đơn giản [LR và LDA], phi tuyến tính [KNN, GIỎ HÀNG, NB và SVM]

Hãy xây dựng và đánh giá các mô hình của chúng tôi

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

.. .

# Thuật toán kiểm tra điểm

mô hình = []

mô hình. chắp thêm[['LR', LogisticRegression[solver='liblinear', multi_class='ovr']]]

mô hình. chắp thêm[['LDA', LinearDiscriminantAnalysis[]]]

mô hình. chắp thêm[['KNN', KNeighborsClassifier[]]]

mô hình. thêm vào[['GIỎ HÀNG', DecisionTreeClassifier[]]]

mô hình. chắp thêm[['NB', GaussianNB[]]]

mô hình. chắp thêm[['SVM', SVC[gamma='auto']]]

# đánh giá lần lượt từng mô hình

kết quả = []

tên = []

cho tên, mô hình trong models:

kfold = StratifiedKFold[n_splits=10, random_state=1, shuffle=True]

cv_results = cross_val_score[model, X_train, Y_train, cv=kfold, scoring='accuracy']

kết quả. chắp thêm[cv_results]

tên. chắp thêm[tên]

in['%s. %f [%f]' % [tên, cv_results.trung bình[], cv_results . .std[]]]

5. 4 Chọn Mẫu tốt nhất

Hiện chúng tôi có 6 mô hình và ước tính độ chính xác cho từng mô hình. Chúng ta cần so sánh các mô hình với nhau và chọn chính xác nhất

Chạy ví dụ trên ta được kết quả thô như sau

1

2

3

4

5

6

LR. 0. 960897 [0. 052113]

LDA. 0. 973974 [0. 040110]

KNN. 0. 957191 [0. 043263]

XE ĐẨY. 0. 957191 [0. 043263]

NB. 0. 948858 [0. 056322]

SVM. 0. 983974 [0. 032083]

Ghi chú. Kết quả của bạn có thể thay đổi do tính chất ngẫu nhiên của thuật toán hoặc quy trình đánh giá hoặc sự khác biệt về độ chính xác của các con số. Cân nhắc chạy ví dụ một vài lần và so sánh kết quả trung bình

Bạn đạt được bao nhiêu điểm?
Đăng kết quả của bạn vào phần nhận xét bên dưới.

Trong trường hợp này, chúng ta có thể thấy rằng có vẻ như Máy Vector Hỗ trợ [SVM] có điểm chính xác ước tính lớn nhất vào khoảng 0. 98 hoặc 98%

Chúng tôi cũng có thể tạo biểu đồ kết quả đánh giá mô hình và so sánh mức chênh lệch cũng như độ chính xác trung bình của từng mô hình. Có một số lượng đo lường độ chính xác cho từng thuật toán vì mỗi thuật toán được đánh giá 10 lần [thông qua 10 lần xác thực chéo]

Một cách hữu ích để so sánh các mẫu kết quả cho mỗi thuật toán là tạo một biểu đồ hộp và râu ria cho mỗi phân phối và so sánh các phân phối

1

2

3

4

5

.. .

# So sánh thuật toán

pyplot. boxplot[kết quả, nhãn=names]

pyplot. tiêu đề['So sánh thuật toán']

pyplot. hiển thị[]

Chúng ta có thể thấy rằng các biểu đồ hộp và râu ria bị đè bẹp ở đầu phạm vi, với nhiều đánh giá đạt độ chính xác 100% và một số đánh giá xuống mức độ chính xác cao 80%.

Box và Whisker Plot So sánh các thuật toán học máy trên bộ dữ liệu Iris Flowers

5. 5 Ví dụ hoàn chỉnh

Để tham khảo, chúng ta có thể liên kết tất cả các yếu tố trước đó lại với nhau thành một tập lệnh duy nhất

Ví dụ đầy đủ được liệt kê dưới đây

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

# so sánh thuật toán

từ gấu trúc nhập read_csv

từ matplotlib nhập pyplot

từ sklearn. model_selection nhập train_test_split

từ sklearn. model_selection nhập cross_val_score

từ sklearn. model_selection nhập StratifiedKFold

từ sklearn. linear_model nhập LogisticRegression

từ sklearn. cây nhập DecisionTreeClassifier

từ sklearn. hàng xóm nhập KNeighborsClassifier

từ sklearn. discriminant_analysis nhập LinearDiscriminantAnalysis

từ sklearn. naive_bayes nhập GaussianNB

từ sklearn. svm nhập SVC

# Tải tập dữ liệu

url = "https. // thô. githubusercontent. com/jbrownlee/Bộ dữ liệu/master/iris. csv"

tên = ['độ dài vách ngăn', 'sepal-width', 'petal-length', 'petal-width', 'class']

tập dữ liệu = read_csv[url, names=names]

# Bộ dữ liệu xác thực tách rời

mảng = tập dữ liệu. giá trị

X = mảng[. ,0. 4]

y = mảng[. ,4]

X_train, X_validation, Y_train, Y_validation = train_test_split[X, y, test_size=0.20, random_state=1, shuffle=True]

# Thuật toán kiểm tra điểm

mô hình = []

mô hình. chắp thêm[['LR', LogisticRegression[solver='liblinear', multi_class='ovr']]]

mô hình. chắp thêm[['LDA', LinearDiscriminantAnalysis[]]]

mô hình. chắp thêm[['KNN', KNeighborsClassifier[]]]

mô hình. thêm vào[['GIỎ HÀNG', DecisionTreeClassifier[]]]

mô hình. chắp thêm[['NB', GaussianNB[]]]

mô hình. chắp thêm[['SVM', SVC[gamma='auto']]]

# đánh giá lần lượt từng mô hình

kết quả = []

tên = []

cho tên, mô hình trong models:

kfold = StratifiedKFold[n_splits=10, random_state=1, shuffle=True]

cv_results = cross_val_score[model, X_train, Y_train, cv=kfold, scoring='accuracy']

kết quả. chắp thêm[cv_results]

tên. chắp thêm[tên]

in['%s. %f [%f]' % [tên, cv_results.trung bình[], cv_results . .std[]]]

# So sánh thuật toán

pyplot. boxplot[kết quả, nhãn=names]

pyplot. tiêu đề['So sánh thuật toán']

pyplot. hiển thị[]

6. Dự đoán

Chúng ta phải chọn một thuật toán để sử dụng để đưa ra dự đoán

Các kết quả trong phần trước cho thấy SVM có lẽ là mô hình chính xác nhất. Chúng tôi sẽ sử dụng mô hình này làm mô hình cuối cùng của chúng tôi

Bây giờ chúng tôi muốn biết về độ chính xác của mô hình trên bộ xác thực của chúng tôi

Điều này sẽ cung cấp cho chúng tôi kiểm tra cuối cùng độc lập về độ chính xác của mô hình tốt nhất. Sẽ rất có giá trị nếu bạn giữ một bộ xác thực đề phòng trường hợp bạn mắc lỗi trong quá trình đào tạo, chẳng hạn như lắp quá nhiều vào bộ đào tạo hoặc rò rỉ dữ liệu. Cả hai vấn đề này sẽ dẫn đến một kết quả quá lạc quan

6. 1 Đưa ra dự đoán

Chúng tôi có thể điều chỉnh mô hình trên toàn bộ tập dữ liệu huấn luyện và đưa ra dự đoán trên tập dữ liệu xác thực

1

2

3

4

5

.. .

# Đưa ra dự đoán về tập dữ liệu xác thực

mô hình = SVC[gamma='auto']

mô hình. phù hợp[X_train, Y_train]

dự đoán = mô hình. dự đoán[X_validation]

Bạn cũng có thể muốn đưa ra dự đoán cho các hàng dữ liệu đơn lẻ. Để biết ví dụ về cách thực hiện điều đó, hãy xem hướng dẫn

  • Cách đưa ra dự đoán với scikit-learning

Bạn cũng có thể muốn lưu mô hình vào tệp và tải mô hình đó sau để đưa ra dự đoán về dữ liệu mới. Để biết ví dụ về cách thực hiện việc này, hãy xem hướng dẫn

  • Lưu và tải các mô hình học máy bằng Python với scikit-learning

6. 2 Đánh giá dự đoán

Chúng tôi có thể đánh giá các dự đoán bằng cách so sánh chúng với kết quả dự kiến ​​trong bộ xác thực, sau đó tính toán độ chính xác của phân loại, cũng như ma trận nhầm lẫn và báo cáo phân loại

1

2

3

4

5

.. . .

# Đánh giá dự đoán

in[accuracy_score[Y_validation, predictions]]

bản in[ma trận nhầm lẫn[Y_validation, predictions]]

in[classification_report[Y_validation, predictions]]

Chúng ta có thể thấy rằng độ chính xác là 0. 966 hoặc khoảng 96% trên tập dữ liệu tạm dừng

Ma trận nhầm lẫn cung cấp một dấu hiệu của các lỗi được thực hiện

Cuối cùng, báo cáo phân loại cung cấp bảng phân tích của từng loại theo độ chính xác, khả năng thu hồi, điểm f1 và hỗ trợ hiển thị kết quả xuất sắc [với điều kiện là tập dữ liệu xác thực nhỏ]

1

2

3

4

5

6

7

8

9

10

11

12

13

0. 9666666666666667

[[11  0  0]

[ 0 12  1]

[ 0  0  6]]

độ chính xác    thu hồi f1-score   hỗ trợ

 

Iris-setosa       1. 00      1. 00      1. 00        11

Iris-versicolor       1. 00      0. 92      0. 96        13

Iris-virginica       0. 86      1. 00      0. 92         6

 

độ chính xác                            0. 97        30

trung bình vĩ mô 0. 95      0. 97      0. 96        30

trung bình có trọng số 0. 97      0. 97      0. 97        30

6. 3 Ví dụ hoàn chỉnh

Để tham khảo, chúng ta có thể liên kết tất cả các yếu tố trước đó lại với nhau thành một tập lệnh duy nhất

Ví dụ đầy đủ được liệt kê dưới đây

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

# Dự đoán

từ gấu trúc nhập read_csv

từ sklearn. model_selection nhập train_test_split

từ sklearn. số liệu nhập classification_report

từ sklearn. số liệu nhập confusion_matrix

từ sklearn. chỉ số nhập accuracy_score

từ sklearn. svm nhập SVC

# Tải tập dữ liệu

url = "https. // thô. githubusercontent. com/jbrownlee/Bộ dữ liệu/master/iris. csv"

tên = ['độ dài vách ngăn', 'sepal-width', 'petal-length', 'petal-width', 'class']

tập dữ liệu = read_csv[url, names=names]

# Bộ dữ liệu xác thực tách rời

mảng = tập dữ liệu. giá trị

X = mảng[. ,0. 4]

y = mảng[. ,4]

X_train, X_validation, Y_train, Y_validation = train_test_split[X, y, test_size=0.20, random_state=1]

# Đưa ra dự đoán về tập dữ liệu xác thực

mô hình = SVC[gamma='auto']

mô hình. phù hợp[X_train, Y_train]

dự đoán = mô hình. dự đoán[X_validation]

# Đánh giá dự đoán

in[accuracy_score[Y_validation, predictions]]

bản in[ma trận nhầm lẫn[Y_validation, predictions]]

in[classification_report[Y_validation, predictions]]

Bạn có thể học máy bằng Python

Làm việc thông qua hướng dẫn ở trên. Bạn sẽ mất từ ​​5 đến 10 phút, tối đa

Bạn không cần phải hiểu mọi thứ. [ít nhất là không phải bây giờ] Mục tiêu của bạn là chạy hết hướng dẫn này đến đầu kia và nhận được kết quả. Bạn không cần phải hiểu mọi thứ trong lần đầu tiên vượt qua. Liệt kê các câu hỏi của bạn khi bạn đi. Sử dụng nhiều cú pháp trợ giúp help[“FunctionName”] trong Python để tìm hiểu về tất cả các hàm mà bạn đang sử dụng

Bạn không cần biết các thuật toán hoạt động như thế nào. Điều quan trọng là phải biết về những hạn chế và cách định cấu hình thuật toán học máy. Nhưng tìm hiểu về các thuật toán có thể đến sau. Bạn cần xây dựng kiến ​​thức thuật toán này từ từ trong một thời gian dài. Hôm nay, hãy bắt đầu bằng cách làm quen với nền tảng này

Bạn không cần phải là một lập trình viên Python. Cú pháp của ngôn ngữ Python có thể trực quan nếu bạn chưa quen với nó. Cũng giống như các ngôn ngữ khác, hãy tập trung vào các lời gọi hàm [e. g. hàm []] và bài tập [e. g. a = “b”]. Điều này sẽ giúp bạn có được hầu hết các cách. Bạn là một nhà phát triển, bạn biết cách tiếp thu kiến ​​thức cơ bản của một ngôn ngữ thật nhanh. Chỉ cần bắt đầu và đi sâu vào chi tiết sau

Bạn không cần phải là một chuyên gia học máy. Bạn có thể tìm hiểu về các lợi ích và hạn chế của các thuật toán khác nhau sau này và có rất nhiều bài đăng mà bạn có thể đọc sau này để tìm hiểu các bước của một dự án máy học và tầm quan trọng của việc đánh giá độ chính xác bằng cách sử dụng xác thực chéo

Còn các bước khác trong một dự án máy học thì sao?. Chúng tôi không đề cập đến tất cả các bước trong dự án máy học vì đây là dự án đầu tiên của bạn và chúng tôi cần tập trung vào các bước chính. Cụ thể là tải dữ liệu, xem dữ liệu, đánh giá một số thuật toán và đưa ra một số dự đoán. Trong các hướng dẫn sau, chúng ta có thể xem các nhiệm vụ chuẩn bị dữ liệu và cải thiện kết quả khác

Tóm lược

Trong bài đăng này, bạn đã khám phá từng bước cách hoàn thành dự án máy học đầu tiên của mình bằng Python

Bạn phát hiện ra rằng hoàn thành một dự án nhỏ từ đầu đến cuối từ tải dữ liệu đến đưa ra dự đoán là cách tốt nhất để làm quen với một nền tảng mới

Bước tiếp theo của bạn

Bạn có làm việc thông qua các hướng dẫn?

  1. Làm việc thông qua hướng dẫn trên
  2. Liệt kê bất kỳ câu hỏi nào bạn có
  3. Tìm kiếm hoặc nghiên cứu câu trả lời
  4. Hãy nhớ rằng, bạn có thể sử dụng help[“FunctionName”] trong Python để nhận trợ giúp về bất kỳ chức năng nào

Bạn có câu hỏi nào không?
Đăng câu hỏi trong phần nhận xét bên dưới.

Thêm hướng dẫn?

Muốn tiếp tục thực hành các kỹ năng học máy của bạn, hãy xem một số hướng dẫn này

Học máy có dễ dàng với Python không?

Nếu bạn định theo đuổi học máy, bạn nên bắt đầu với các khái niệm toán học chính này và chuyển sang các khía cạnh viết mã từ đó. Nhiều ngôn ngữ liên quan đến trí tuệ nhân tạo như Python được coi là tương đối dễ .

Làm thế nào để máy học trong Python?

Máy học trong Python. Hướng dẫn từng bước .
Cài đặt nền tảng Python và SciPy
Đang tải tập dữ liệu
Tóm tắt tập dữ liệu
Trực quan hóa tập dữ liệu
Đánh giá một số thuật toán
Đưa ra một số dự đoán

Những chủ đề nào của Python là cần thiết cho máy học?

Trong Python, bạn sẽ học. .
NumPy cho các phép toán
TensorFlow cho Deep Learning
Gói PyTorch để học sâu
OpenCV và Dlib cho thị giác máy tính
scikit-learning cho các thuật toán phân loại và hồi quy
gấu trúc cho các hoạt động tập tin
Matplotlib để trực quan hóa dữ liệu và hơn thế nữa

4 điều cơ bản của học máy là gì?

Các kỹ thuật Machine Learning chủ yếu được chia thành 4 loại sau. .
Học có giám sát. Học có giám sát được áp dụng khi máy có dữ liệu mẫu, tôi. e. , dữ liệu đầu vào cũng như đầu ra có nhãn chính xác. .
Học không giám sát. .
Học tăng cường. .
Học bán giám sát

Chủ Đề