Học Scikit - Học máy bằng Python



Blog học tập Scikit sẽ giới thiệu cho các bạn về Học máy trong python. Nó bao gồm một trường hợp sử dụng trong đó chúng tôi sẽ triển khai hồi quy logistic bằng cách sử dụng scikit learning.

Trong blog này, chúng ta sẽ thảo luận về Scikit learning trong python. Trước khi nói về Scikit learning, người ta phải hiểu khái niệm về học máyvà phải biết cách sử dụng . Với công nghệ máy học, bạn không phải thu thập thông tin chi tiết của mình theo cách thủ công. Bạn chỉ cần một thuật toán và máy sẽ làm phần còn lại cho bạn! Điều này có thú vị không? Scikit learning là một trong những điểm thu hút mà chúng ta có thể triển khai học máy bằng Python. Nólà một thư viện máy học miễn phí chứa các công cụ đơn giản và hiệu quả cho các mục đích phân tích và khai thác dữ liệu.Tôi sẽ đưa bạn qua các chủ đề sau, sẽ đóng vai trò là nguyên tắc cơ bản cho các blog sắp tới:

Học máy là gì?

Máy học là một loại trí tuệ nhân tạo cho phép các ứng dụng phần mềm học từ dữ liệu và trở nên chính xác hơn trong việc dự đoán kết quả mà không cần sự can thiệp của con người. Nhưng điều đó xảy ra như thế nào? Muốn vậy, máy cần được huấn luyện về một số dữ liệu và dựa vào đó, nó sẽ phát hiện ra mẫu để tạo ra một mẫu.Quá trình thu thập kiến ​​thức từ dữ liệu và cung cấp thông tin chi tiết mạnh mẽ này là tất cả về học máy. Tham khảo hình ảnh dưới đây để hiểu rõ hơn về hoạt động của nó:





MachineLearning - Scikit Learn - Edureka

Sử dụng dữ liệu, hệ thống học một thuật toán và sau đó sử dụng nó để xây dựng một mô hình dự đoán. Sau đó, chúng tôi điều chỉnh mô hình hoặc chúng tôi nâng cao độ chính xác của mô hình bằng cách sử dụng dữ liệu phản hồi. Sử dụng dữ liệu phản hồi này, chúng tôi điều chỉnh mô hình và dự đoán hành động trên tập dữ liệu mới. Chúng tôi sẽđang thảo luận về một trường hợp sử dụng của một trong những phương pháp tiếp cận thuật toán, nơi chúng tôi sẽ đào tạo và kiểm tra dữ liệu, điều này sẽ giúp bạn hiểu rõ hơn liệu nó có phù hợp với vấn đề cụ thể của bạn hay không.



Tiếp theo, có ba loại học máy:

    • Học tập có giám sát : Đây là một quá trình học thuật toán từ tập dữ liệu huấn luyện. Học có giám sát là nơi bạn tạo một hàm ánh xạ giữa biến đầu vào (X) và biến đầu ra (Y) và bạn sử dụng một thuật toán để tạo một hàm giữa chúng. Nó còn được gọi là mô hình dự đoán đề cập đến một quá trình đưa ra dự đoán bằng cách sử dụng dữ liệu. Một số thuật toán bao gồm Hồi quy tuyến tính, Hồi quy logistic, Cây quyết định, Rừng ngẫu nhiên và bộ phân loại Naive Bayes. Chúng tôi sẽ thảo luận thêm về một trường hợp sử dụng của học có giám sát trong đó chúng tôi đào tạo máy sử dụng hồi quy logistic .
    • Học tập không giám sát : Đây là một quá trình trong đó một mô hình được đào tạo bằng cách sử dụng một thông tin không được gắn nhãn. Quá trình này có thể được sử dụng để phân cụm dữ liệu đầu vào trong các lớp trên cơ sở các thuộc tính thống kê của chúng. Học không giám sát còn được gọi là cphân tích lustering có nghĩa là nhóm các đối tượng dựa trên thông tin được tìm thấy trong dữ liệu mô tả các đối tượng hoặc mối quan hệ của chúng. Mục đích là các đối tượng trong một nhóm phải giống nhau nhưng khác với các đối tượng trong nhóm khác. Một số thuật toán bao gồm phân cụm K-mean, phân cụm phân cấp, v.v.
    • Học tăng cường: Học tập củng cố là học tập bằng cách tương tác với không gian hoặc môi trường.Tác nhân RL học từ hậu quả của các hành động của nó, thay vì được dạy một cách rõ ràng. Nó lựa chọn hành động của mình trên cơ sở những kinh nghiệm trong quá khứ (khai thác) và cả những lựa chọn mới (khám phá).

Tổng quan về Scikit Learn

Scikit learning là một thư viện được sử dụng để thực hiện học máy bằng Python. Scikit learning là một thư viện mã nguồn mở được cấp phép theo BSD và có thể sử dụng lại trong nhiều ngữ cảnh khác nhau, khuyến khích sử dụng trong học thuật và thương mại. Nó cung cấp một loạt các thuật toán học có giám sát và không giám sát bằng Python.Scikit learning bao gồm các thuật toán và thư viện phổ biến. Ngoài ra, nó cũng chứa các gói sau:



  • NumPy
  • Matplotlib
  • SciPy (Python khoa học)

Để thực hiện Scikit learning, trước tiên chúng ta cần nhập các gói trên. Nếu bạn không quen thuộc với các thư viện này, bạn có thể xem các blog trước đây của tôi trên và . Bạn có thể tải xuống hai gói này bằng dòng lệnh hoặc nếu bạn đang sử dụng PYCharm, bạn có thể cài đặt trực tiếp nó bằng cách chuyển đến cài đặt của bạn giống như cách bạn làm với các gói khác.

bộ lọc ngữ cảnh trong hoạt cảnh là gì

Tiếp theo, theo cách tương tự, bạn phải nhập Sklearn.Scikit learning được xây dựng dựa trên SciPy (Scientific Python) phải được cài đặt trước khi bạn có thể sử dụng Scikit-learning. Bạn có thể tham khảo thêm trang mạng để tải xuống giống nhau. Ngoài ra, hãy cài đặt Scipy và gói bánh xe nếu nó không có mặt, bạn có thể nhập lệnh dưới đây:

pip cài đặt scipy

Mình đã tải về và cài đặt rồi, bạn có thể tham khảo ảnh chụp màn hình bên dưới để tránh nhầm lẫn.

Sau khi nhập các thư viện ở trên, hãy tìm hiểu sâu hơn và hiểu cách sử dụng chính xác của Scikit learning.

Scikit learning đi kèm với các bộ dữ liệu mẫu, chẳng hạn như mống mắtchữ số . Bạn có thể nhập các tập dữ liệu và chơi với chúng. Sau đó, bạn phải nhập SVM, viết tắt của Support Vector Machine. SVM là một dạng máy học được sử dụng để phân tích dữ liệu.

Hãy để chúng tôi lấy một ví dụ mà chúng tôi sẽ lấy chữ số tập dữ liệu và nó sẽ phân loại các số cho chúng tôi, ví dụ- 0 1 2 3 4 5 6 7 8 9. Tham khảo mã bên dưới:

import matplotlib.pyplot as plt from sklearn import datasets from sklearn import svmumbers = datasets.load_digits () print (digit.data)

Đầu ra -

[[0. 0. 5. ..., 0. 0. 0.] [0. 0. 0. ..., 10. 0. 0.] [0. 0. 0. ..., 16. 9. 0.] ..., [0. 0. 1. ..., 6. 0. 0.] [0. 0. 2. ..., 12. 0. 0.] [0. 0. 10. ..., 12. 1. 0.]]

Ở đây chúng ta vừa nhập các thư viện, SVM, bộ dữ liệu và in dữ liệu. Đó là một dãy dài dữ liệu chữ số nơi dữ liệu được lưu trữ. Nó cung cấp quyền truy cập vào các tính năng có thể được sử dụng để phân loại chữ số mẫu. Tiếp theo, bạn cũng có thể thử một số thao tác khác như target, hình ảnh, v.v. Hãy xem xét ví dụ bên dưới:

import matplotlib.pyplot as plt from sklearn import datasets from sklearn import svmumbers = datasets.load_digits () print (digit.target) print (digit.images [0])

Đầu ra -

[0 1 2 ..., 8 9 8] // mục tiêu của dữ liệu [[0. 0. 5. 13. 9. 1. 0. 0.] // ảnh của dữ liệu [0. 0. 13. 15. 10. 15. 5. 0.] [0. 3. 15. 2. 0. 11. 8. 0.] [0. 4. 12. 0. 0. 8. 8. 0.] [0. 5. 8. 0. 0. 9. 8. 0.] [0. 4. 11. 0. 1. 12. 7. 0.] [0. 2. 14. 5. 10. 12. 0. 0. ] [0. 0. 6. 13. 10. 0. 0. 0.]]

Như bạn có thể thấy ở trên, các chữ số mục tiêu và hình ảnh của các chữ số được in. digit.target đưa ra sự thật nền tảng cho chữ số tập dữ liệu, đó là số tương ứng với mỗi hình ảnh chữ số. Tiếp theo, dữ liệu luôn là một mảng 2D có hình dạng (n_samples, n_features), mặc dù dữ liệu ban đầu có thể có hình dạng khác. Nhưng trong trường hợp các chữ số, mỗi mẫu ban đầu là một hình ảnh của hình dạng (8,8) và có thể được truy cập bằng chữ số . hình ảnh.

Học hỏi và dự đoán

Tiếp theo, trong Scikit learning, chúng ta đã sử dụng một tập dữ liệu (mẫu gồm 10 lớp có thể, các chữ số từ 0 đến 9) và chúng ta cần dự đoán các chữ số khi một hình ảnh được đưa ra. Để dự đoán lớp học, chúng ta cần một người ước lượng giúp dự đoán các lớp mà các mẫu không nhìn thấy thuộc về. Trong Scikit learning, chúng ta có một công cụ ước tính để phân loại là một đối tượng python triển khai các phương thức phù hợp (x, y)dự đoán (T). Hãy xem xét ví dụ dưới đây:

import matplotlib.pyplot as plt from sklearn import datasets from sklearn import svmumbers = datasets.load_digits () // dataset clf = svm.SVC (gamma = 0,001, C = 100) print (len (digit.data)) x, y = digit.data [: - 1] ,umbers.target [: - 1] // đào tạo dữ liệu clf.fit (x, y) print ('Dự đoán:', clf.p Dự đoán (umbers.data [-1]) ) // dự đoán dữ liệu plt.imshow (umbers.images [-1], cmap = plt.cm.gray_r, interpolation = 'near') plt.show ()

Đầu ra -

tạo một mảng đối tượng trong java

1796
Dự đoán: [8]


Trong ví dụ trên, đầu tiên chúng tôi đã tìm thấy độ dài và tải 1796 ví dụ. Tiếp theo, chúng tôi đã sử dụng dữ liệu này làm dữ liệu học tập, nơi chúng tôi cần kiểm tra phần tử cuối cùng và phần tử phủ định đầu tiên. Ngoài ra, chúng ta cần kiểm tra xem máy đã dự đoán đúng dữ liệu hay chưa. Vì vậy, chúng tôi đã sử dụng Matplotlib để hiển thị hình ảnh của các chữ số.Vì vậy, để kết luận, bạn có dữ liệu chữ số, bạn có mục tiêu, bạn phù hợp và dự đoán nó và do đó bạn có thể bắt đầu! Nó thực sự nhanh chóng và dễ dàng, phải không?

Bạn cũng có thể trực quan hóa các nhãn mục tiêu bằng hình ảnh, chỉ cần tham khảo đoạn mã dưới đây:

import matplotlib.pyplot as plt from sklearn import datasets from sklearn import svmumbers = datasets.load_digits () # Nối các hình ảnh và nhãn mục tiêu trong danh sách images_and_labels = list (zip (digit.images, digit.target)) # cho mọi phần tử trong danh sách cho chỉ mục, (hình ảnh, nhãn) trong liệt kê (images_and_labels [: 8]): # khởi tạo một ô con 2X4 ở vị trí thứ i + 1 plt.subplot (2, 4, chỉ mục + 1) # Hiển thị hình ảnh trong tất cả các ô con plt.imshow (image, cmap = plt.cm.gray_r, interpolation = 'gần nhất') # Thêm tiêu đề cho mỗi ô con plt.title ('Đào tạo:' + str (nhãn)) # Hiển thị ô plt. chỉ()

Đầu ra-


Như bạn có thể thấy trong đoạn mã trên, chúng tôi đã sử dụng hàm ‘zip’ để nối các hình ảnh và nhãn mục tiêu trong một danh sách và sau đó lưu nó vào một biến, chẳng hạn như images_and_labels. Sau đó, chúng tôi đã lập chỉ mục tám phần tử đầu tiên trong một lưới 2 x 4 ở mỗi vị trí. Sau đó, chúng tôi vừa hiển thị các hình ảnh với sự trợ giúp của Matplotlib và thêm tiêu đề là ‘đào tạo’.

Trường hợp sử dụng - Dự đoán bằng hồi quy logistic

Báo cáo vấn đề - Một công ty xe hơi đã cho ra mắt một mẫu SUV mới trên thị trường. Sử dụng dữ liệu trước đây về doanh số bán xe SUV của họ, họ muốn dự đoán danh mục những người có thể quan tâm đến việc mua xe này.

Đối với điều này, hãy để chúng tôi xem tập dữ liệu mà tôi có UserId, giới tính, tuổi, mức lương ước tính và đã mua dưới dạng cột. Đây chỉ là một tập dữ liệu mẫu, bạn có thể tải xuống toàn bộ tập dữ liệu từ đây . Khi chúng tôi nhập dữ liệu trong pyCharm, nó sẽ giống như thế này.

Bây giờ chúng ta hãy hiểu dữ liệu này. Như bạn có thể thấy trong tập dữ liệu trên, chúng tôi có các danh mục như id, giới tính, tuổi, v.v. Bây giờ dựa trên các danh mục này, chúng tôi sẽ đào tạo máy của mình và dự đoán số không. mua hàng. Vì vậy, ở đây, chúng tôi có biến độc lập dưới dạng 'tuổi', 'mức lương dự kiến' và biến phụ thuộc là 'đã mua'. Bây giờ chúng tôi sẽ áp dụng phương pháp học có giám sát, tức là thuật toán hồi quy logistic để tìm ra số lượng mua bằng cách sử dụng dữ liệu hiện có.

Trước tiên, hãy tìm hiểu tổng quan về hồi quy logistic.

Hồi quy logistic - Hồi quy logistic tạo ra kết quả ở định dạng nhị phân được sử dụng để dự đoán kết quả của một biến phụ thuộc phân loại. Nó được sử dụng rộng rãi nhất khi biến phụ thuộc là nhị phân, tức là số danh mục có sẵn là hai, chẳng hạn như, đầu ra thông thường của hồi quy logistic là:

  • Có và không
  • Đúng và sai
  • Cao và thấp
  • Đạt và Không đạt

Bây giờ để bắt đầu với mã, trước tiên chúng ta sẽ nhập các thư viện này - Numpy, Matplotlib và Pandas. Nhập gấu trúc trong Pycharm khá dễ dàng bằng cách làm theo các bước sau:

Cài đặt -> Thêm gói -> Gấu trúc -> Cài đặt

Sau đó, chúng tôi sẽ nhập tập dữ liệu và tách biến phụ thuộc (đã mua) và biến độc lập (tuổi, lương) bằng cách:

dataset = pd.read_csv ('Social_Network_Ads.csv') X = dataset.iloc [:, [2, 3]]. value y = dataset.iloc [:, 4] .values ​​print (X) print (y)

Bước tiếp theo sẽ là đào tạo và kiểm tra dữ liệu. Một chiến lược phổ biến là lấy tất cả dữ liệu được gắn nhãn và chia thành các tập con huấn luyện và thử nghiệm, thường được lấy với tỷ lệ 70-80% cho tập con huấn luyện và 20-30% cho tập con thử nghiệm. Do đó, chúng tôi đã tạo bộ Đào tạo và Kiểm tra bằng cách sử dụng cross_validation.

từ sklearn.cross_validation nhập train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,25, random_state = 0)

Chúng tôi cũng có thể chia tỷ lệ các giá trị đầu vào để có hiệu suất tốt hơn bằng StandarScaler như hình dưới đây:

từ sklearn.preprocessing import StandardScaler sc = StandardScaler () X_train = sc.fit_transform (X_train) X_test = sc.transform (X_test)

Bây giờ chúng ta sẽ tạo mô hình hồi quy logistic.

from sklearn.linear_model import LogisticRegression classifier = LogisticRegression (random_state = 0) classifier.fit (X_train, y_train)

Chúng tôi có thể sử dụng điều này và dự đoán kết quả của bộ thử nghiệm của chúng tôi.

y_pred = classifier.p Dự đoán (X_test)

Bây giờ, chúng tôi có thể kiểm tra xem có bao nhiêu dự đoán chính xác và bao nhiêu dự đoán không sử dụng ma trận hỗn loạn . Chúng ta hãy định nghĩa Y là các trường hợp dương và N là các trường hợp tiêu cực. Bốn kết quả được xây dựng trong ma trận nhầm lẫn 2 * 2, như được trình bày dưới đây:

từ sklearn.metrics nhập nhầm lẫn_matrix cm = nhầm lẫn_matrix (y_test, y_pred) print (cm)

Đầu ra-

[[65 3] [8 24]]

Tiếp theo, dựa trên ma trận nhầm lẫn của chúng tôi, chúng tôi có thể tính toán độ chính xác. Vì vậy, trong ví dụ trên của chúng tôi, độ chính xác sẽ là:

= TP + TN / FN + FP

= 65 + 24/65 +3+ 8 + 24

quản trị viên được chứng nhận cloudera cho apache hadoop

= 89%

Chúng tôi đã làm điều này theo cách thủ công! Bây giờ chúng ta hãy xem cách máy tính toán giống nhau cho chúng ta, vì chúng ta có một hàm tích hợp sẵn ‘precision_score’ tính toán độ chính xác và in ra, như được hiển thị bên dưới:

from sklearn.metrics import precision_score // nhập hàm in precision_score (precision_score (y_test, y_pred) * 100) // in độ chính xác

Đầu ra -

89.0

Tiếng hoan hô! Do đó, chúng tôi đã thực hiện thành công hồi quy logistic bằng cách sử dụng Scikit learning với độ chính xác là 89%.

Bấm vào đây để có được toàn bộ nguồn đầy đủ của dự đoán trên sử dụng thư viện học Python Scikit.

Với điều này, chúng tôi đã chỉ đề cập đến một trong số nhiều thuật toán phổ biến mà python phải cung cấp.Chúng tôi đã bao gồm tất cả những điều cơ bản về thư viện học Scikit,vì vậy bạn có thể bắt đầu thực hành ngay bây giờ. Bạn càng thực hành nhiều bạn sẽ học được nhiều hơn. Hãy theo dõi các blog hướng dẫn thêm về python!

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của blog “Scikit học” này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất. Để có kiến ​​thức chuyên sâu về Python cùng với các ứng dụng khác nhau của nó, bạn có thể để được đào tạo trực tuyến trực tiếp với hỗ trợ 24/7 và quyền truy cập trọn đời.