Xây dựng Bộ phân loại học máy đầu tiên của bạn bằng Python



Bài viết này sẽ giúp bạn xây dựng Bộ phân loại học máy bằng Python từ Scratch. Nó cũng sẽ cung cấp cho bạn kiến ​​thức chi tiết về Phân loại.

là từ thông dụng ngay bây giờ. Một số thứ đáng kinh ngạc đang được thực hiện với sự trợ giúp của máy học. Từ là của chúng tôi trợ lý riêng , để quyết định các tuyến đường du lịch , giúp chúng tôi mua sắm, hỗ trợ chúng tôi điều hành công việc kinh doanh, chăm sóc sức khỏe và sức khỏe, máy học được tích hợp vào sự tồn tại hàng ngày của chúng ta ở các cấp độ cơ bản, đến nỗi hầu hết thời gian chúng ta thậm chí không nhận ra rằng mình đang dựa vào nó. Trong bài viết này, chúng tôi sẽ làm theo cách tiếp cận của người mới bắt đầu để triển khai bộ phân loại học máy tiêu chuẩn bằng Python.

Tổng quan về Học máy

Học máy là một khái niệm cho phép máy học từ các ví dụ và kinh nghiệm, cũng như điều đó mà không cần được lập trình rõ ràng. Vì vậy, thay vì bạn viết mã, những gì bạn làm là bạn cung cấp dữ liệu cho thuật toán chung và thuật toán / máy xây dựng logic dựa trên dữ liệu đã cho.





Máy phân loại học máy

Học máy liên quan đến khả năng máy móc đưa ra quyết định, đánh giá kết quả hành động của chúng và cải thiện hành vi của chúng để liên tiếp đạt được kết quả tốt hơn.



c vs c ++ vs java

Quá trình học tập diễn ra theo ba cách chính

  • Học tập có giám sát
  • Học tập không giám sát
  • Học tăng cường

Mẫu cho bộ phân loại học máy

Các công cụ học máy được cung cấp khá tiện lợi trong một thư viện Python có tên là scikit-learning, rất đơn giản để truy cập và áp dụng.



Cài đặt scikit-learning thông qua dấu nhắc lệnh bằng cách sử dụng:

pip install -U scikit-learning

Nếu bạn là người dùng anaconda, trên lời nhắc anaconda, bạn có thể sử dụng:

conda cài đặt scikit-learning

Việc cài đặt yêu cầu cài đặt trước các gói NumPy và SciPy trên hệ thống của bạn.

Sơ chế: Bước đầu tiên và cần thiết nhất trong bất kỳ phân tích dữ liệu dựa trên máy học nào là phần tiền xử lý. Trình bày chính xác và làm sạch dữ liệu là hoàn toàn cần thiết để mô hình ML đào tạo tốt và hoạt động đúng với tiềm năng của nó.

Bước 1 - Nhập các thư viện cần thiết

import numpy as np import pandas as pd import matplotlib.pyplot as plt

Bước 2 - Nhập tập dữ liệu

dataset = pd.read_csv ()

Sau đó, chúng tôi chia tập dữ liệu thành các biến độc lập và phụ thuộc. Các biến độc lập sẽ là dữ liệu đầu vào và biến phụ thuộc là dữ liệu đầu ra.

X = dataset.iloc []. Giá trị y = dataset.iloc []. Giá trị

Bước 3 - Xử lý dữ liệu bị thiếu

Tập dữ liệu có thể chứa các giá trị trống hoặc rỗng, có thể gây ra lỗi trong kết quả của chúng tôi. Do đó, chúng tôi cần phải đối phó với các mục như vậy. Một thực tế phổ biến là thay thế các giá trị null bằng một giá trị chung, như giá trị trung bình hoặc giá trị thường xuyên nhất trong cột đó.

from sklearn.preprocessing import Imputer imputer = Imputer (missing_values ​​= 'NaN', strategy = 'mean', axis = 0) imputer = imputer.fit (X []) X [] = imputer.transform (X [])

Bước 4 - Chuyển đổi các biến phân loại thành các biến số

từ sklearn.preprocessing import LabelEncoder le_X = LabelEncoder () X [] = le_X.fit_transform (X []) labelencoder_y = LabelEncoder () y = labelencoder_y.fit_transform (y)

Bây giờ, sau khi mã hóa, có thể xảy ra trường hợp máy giả định dữ liệu số làm thứ hạng cho các cột được mã hóa. Do đó, để cung cấp trọng số bằng nhau, chúng ta phải chuyển đổi các số thành vectơ một nóng, sử dụng lớp OneHotEncoder.

giải thích kiến ​​trúc mvc trong java với ví dụ
từ sklearn.preprocessing import OneHotEncoder oneHE = OneHotEncoder (categorical_features = []) X = oneHE.fit_transform (X) .toarray ()

Bước 5 - Thực hiện mở rộng quy mô

Bước này là để xử lý các chênh lệch phát sinh từ các thang đo không khớp của các biến. Do đó, chúng tôi chia tỷ lệ tất cả chúng về cùng một phạm vi, để chúng nhận được trọng lượng bằng nhau khi được nhập vào mô hình. Chúng tôi sử dụng một đối tượng của lớp StandardScaler cho mục đích này.

từ sklearn.preprocessing import StandardScaler sc_X = StandardScaler () X = sc_X.fit_transform (X)

Bước 6 - Tách tập dữ liệu thành dữ liệu đào tạo và thử nghiệm

Là bước cuối cùng của quá trình tiền xử lý, tập dữ liệu cần được chia thành tập huấn luyện và tập kiểm tra. Tỷ lệ tiêu chuẩn của phân chia thử nghiệm tàu ​​là 75% -25%. Chúng tôi có thể sửa đổi theo yêu cầu. Hàm train_test_split () có thể làm việc này cho chúng ta.

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

Xây dựng mô hình: Bước này thực sự khá đơn giản. Khi chúng tôi quyết định mô hình nào sẽ áp dụng trên dữ liệu, chúng tôi có thể tạo một đối tượng của lớp tương ứng và phù hợp với đối tượng trên tập huấn luyện của chúng tôi, coi X_train là đầu vào và y_train là đầu ra.

từ sklearn. import classifier = () classifier.fit (X_train, y_train)

Mô hình hiện đã được đào tạo và sẵn sàng. Bây giờ chúng ta có thể áp dụng mô hình của mình cho tập thử nghiệm và tìm đầu ra dự đoán.

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

Xem kết quả: Hiệu suất của bộ phân loại có thể được đánh giá bằng các tham số về độ chính xác, độ chính xác, độ thu hồi và điểm số f1. Các giá trị này có thể được nhìn thấy bằng cách sử dụng một phương thức được gọi là phân loại_report (). t cũng có thể được xem như một ma trận nhầm lẫn giúp chúng ta biết có bao nhiêu loại dữ liệu đã được phân loại chính xác.

từ sklearn.metrics nhập nhầm lẫn_matrix cm = nhầm lẫn_matrix (y_test, y_pred) in (cm) từ sklearn.metrics nhập phân loại_report target_names = [] print (phân loại_report (y_test, y_pred, target_names = target_names))

Vấn đề phân loại học máy

Chúng tôi sẽ sử dụng bộ dữ liệu Iris rất phổ biến và đơn giản, chứa các kích thước của hoa trong 3 loại - Iris-setosa, Iris-versicolor và Iris-virginica. Có 150 mục nhập trong tập dữ liệu.

# Nhập thư viện nhập numpy dưới dạng np nhập matplotlib.pyplot dưới dạng plt nhập gấu trúc dưới dạng pd # Nhập tập dữ liệu tập dữ liệu = pd.read_csv ('iris.csv')

Hãy để chúng tôi xem tập dữ liệu ngay bây giờ.

dataset.head ()

Chúng ta có 4 biến độc lập (không bao gồm Id), cụ thể là cột số 1-4 và cột 5 là biến phụ thuộc. Vì vậy, chúng tôi có thể tách chúng ra.

X = dataset.iloc [:, 1: 5] .values ​​y = dataset.iloc [:, 5] .values

Bây giờ chúng ta có thể tách Tập dữ liệu thành Đào tạo và Kiểm tra.

# Tách tập dữ liệu thành tập huấn luyện và tập kiểm tra từ sklearn.model_selection nhập train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,25)

Bây giờ chúng ta sẽ áp dụng một bộ phân loại hồi quy logistic cho tập dữ liệu.

# Xây dựng và đào tạo mô hình từ sklearn.linear_model import LogisticRegression classifier = LogisticRegression () classifier.fit (X_train, y_train) # Dự đoán kết quả bộ Kiểm tra y_pred = classifier.p Dự đoán (X_test)

Bước cuối cùng sẽ là phân tích hiệu suất của mô hình được đào tạo.

chuyển đổi nhị phân sang thập phân trong java
# Tạo Ma trận Lẫn lộn từ sklearn.metrics nhập nhầm lẫn_matrix cm = nhầm lẫn_matrix (y_test, y_pred) print (cm)

Điều này cho chúng ta thấy rằng 13 mục của loại đầu tiên, 11 của loại thứ hai và 9 của loại thứ ba được dự đoán chính xác bởi mô hình.

# Tạo độ chính xác, độ chính xác, thu hồi và điểm số f1 từ sklearn.metrics nhập khẩu phân loại_report target_names = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'] print (phân loại_report (y_test, y_pred, target_names = target_names) )

Báo cáo cho thấy các giá trị độ chính xác, thu hồi, điểm f1 và độ chính xác của mô hình trên tập thử nghiệm của chúng tôi, bao gồm 38 mục nhập (25% tập dữ liệu).

Xin chúc mừng, bạn đã tạo và triển khai thành công bộ phân loại học máy đầu tiên của mình bằng Python! Để có kiến ​​thức chuyên sâu về cùng với các ứng dụng khác nhau của nó, bạn có thể đăng ký đào tạo trực tuyến Python trực tiếp với hỗ trợ 24/7 và quyền truy cập suốt đời.