Cách sử dụng trình phân loại trong Python

So sánh một số bộ phân loại trong scikit-learning trên bộ dữ liệu tổng hợp. Mục đích của ví dụ này là để minh họa bản chất của ranh giới quyết định của các bộ phân loại khác nhau. Điều này nên được thực hiện với một hạt muối, vì trực giác được truyền tải bởi những ví dụ này không nhất thiết phải chuyển sang bộ dữ liệu thực

Đặc biệt trong không gian nhiều chiều, dữ liệu có thể dễ dàng được phân tách tuyến tính hơn và sự đơn giản của các bộ phân loại như Bayes ngây thơ và SVM tuyến tính có thể dẫn đến khả năng khái quát hóa tốt hơn so với các bộ phân loại khác đạt được

Các ô hiển thị các điểm đào tạo có màu đồng nhất và các điểm kiểm tra bán trong suốt. Phía dưới bên phải hiển thị độ chính xác phân loại trên bộ kiểm tra

Trong bài đăng này, chúng tôi sẽ triển khai một số thuật toán học máy trong Python bằng Scikit-learning, công cụ học máy phổ biến nhất dành cho Python. Sử dụng tập dữ liệu đơn giản cho nhiệm vụ huấn luyện bộ phân loại để phân biệt giữa các loại trái cây khác nhau

Mục đích của bài đăng này là xác định thuật toán học máy phù hợp nhất cho vấn đề hiện tại; . Bắt đầu nào

Dữ liệu

Bộ dữ liệu trái cây được tạo bởi Dr. Iain Murray từ Đại học Edinburgh. Anh ấy đã mua vài chục quả cam, chanh và táo thuộc nhiều loại khác nhau và ghi lại số đo của chúng vào một bảng. Và sau đó các giáo sư tại Đại học Michigan đã định dạng lại dữ liệu trái cây một chút và có thể tải xuống từ đây

Hãy xem một vài hàng đầu tiên của dữ liệu

%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table['fruit_data_with_colors.txt']
fruits.head[]

Hình 1

Mỗi hàng của tập dữ liệu đại diện cho một miếng trái cây như được biểu thị bằng một số tính năng có trong các cột của bảng

Chúng tôi có 59 miếng trái cây và 7 tính năng trong bộ dữ liệu

print[fruits.shape]

[59, 7]

Chúng tôi có bốn loại trái cây trong tập dữ liệu

print[fruits['fruit_name'].unique[]]

['táo' 'quýt' 'cam' 'chanh']

Dữ liệu khá cân bằng ngoại trừ tiếng quan thoại. Chúng ta sẽ phải đi với nó

print[fruits.groupby['fruit_name'].size[]]

Hình 2
import seaborn as sns
sns.countplot[fruits['fruit_name'],label="Count"]
plt.show[]

Hình 3Trực quan hóa
  • Biểu đồ hộp cho mỗi biến số sẽ cho chúng ta ý tưởng rõ ràng hơn về phân phối của các biến đầu vào
fruits.drop['fruit_label', axis=1].plot[kind='box', subplots=True, layout=[2,2], sharex=False, sharey=False, figsize=[9,9], 
title='Box Plot for each input variable']
plt.savefig['fruits_box']
plt.show[]

hinh 4
  • Có vẻ như điểm màu có phân phối gần Gaussian
import pylab as pl
fruits.drop['fruit_label' ,axis=1].hist[bins=30, figsize=[9,9]]
pl.suptitle["Histogram for each numeric input variable"]
plt.savefig['fruits_hist']
plt.show[]

Hình 5
  • Một số cặp thuộc tính có tương quan [khối lượng và chiều rộng]. Đ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
from pandas.tools.plotting import scatter_matrix
from matplotlib import cm
feature_names = ['mass', 'width', 'height', 'color_score']
X = fruits[feature_names]
y = fruits['fruit_label']
cmap = cm.get_cmap['gnuplot']
scatter = pd.scatter_matrix[X, c = y, marker = 'o', s=40, hist_kwds={'bins':15}, figsize=[9,9], cmap = cmap]
plt.suptitle['Scatter-matrix for each input variable']
plt.savefig['fruits_scatter_matrix']

Hình 6Tóm tắt thống kê

Hình 7

Chúng ta có thể thấy rằng các giá trị số không có cùng tỷ lệ. Chúng tôi sẽ cần áp dụng tỷ lệ cho tập kiểm tra mà chúng tôi đã tính toán cho tập huấn luyện

Tạo Tập huấn luyện và Kiểm tra và Áp dụng Chia tỷ lệ
from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split[X, y, random_state=0]from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler[]
X_train = scaler.fit_transform[X_train]
X_test = scaler.transform[X_test]
Xây dựng Mô hình

Hồi quy logistic

from sklearn.linear_model import LogisticRegressionlogreg = LogisticRegression[]
logreg.fit[X_train, y_train]
print['Accuracy of Logistic regression classifier on training set: {:.2f}'
.format[logreg.score[X_train, y_train]]]
print['Accuracy of Logistic regression classifier on test set: {:.2f}'
.format[logreg.score[X_test, y_test]]]

Độ chính xác của bộ phân loại hồi quy Logistic trên tập huấn luyện. 0. 70
Độ chính xác của bộ phân loại hồi quy Logistic trên tập kiểm tra. 0. 40

cây quyết định

print[fruits.shape]
0

Độ chính xác của bộ phân loại Cây quyết định trên tập huấn luyện. 1. 00
Độ chính xác của bộ phân loại Cây quyết định trên tập kiểm tra. 0. 73

K-Hàng xóm gần nhất

print[fruits.shape]
1

Độ chính xác của bộ phân loại K-NN trên tập huấn luyện. 0. 95
Độ chính xác của bộ phân loại K-NN trên tập kiểm tra. 1. 00

Phân tích phân biệt tuyến tính

print[fruits.shape]
2

Độ chính xác của bộ phân loại LDA trên tập huấn luyện. 0. 86
Độ chính xác của bộ phân loại LDA trên tập kiểm tra. 0. 67

Gaussian Naive Bayes

print[fruits.shape]
3

Độ chính xác của trình phân loại GNB trên tập huấn luyện. 0. 86
Độ chính xác của bộ phân loại GNB trên tập kiểm tra. 0. 67

Máy véc tơ hỗ trợ

print[fruits.shape]
4

Độ chính xác của trình phân loại SVM trên tập huấn luyện. 0. 61
Độ chính xác của bộ phân loại SVM trên bộ kiểm tra. 0. 33

Thuật toán KNN là mô hình chính xác nhất mà chúng tôi đã thử. Ma trận nhầm lẫn cung cấp một dấu hiệu không có lỗi trên tập kiểm tra. Tuy nhiên, bộ kiểm tra rất nhỏ

print[fruits.shape]
5

Hình 7Viết ranh giới quyết định của bộ phân loại k-NN
print[fruits.shape]
6

Hình 8
print[fruits.shape]
7

Hình 9

Đối với tập dữ liệu cụ thể này, chúng tôi đạt được độ chính xác cao nhất khi k=5

Bản tóm tắt

Trong bài đăng này, chúng tôi tập trung vào độ chính xác dự đoán. Mục tiêu của chúng tôi là tìm hiểu một mô hình có hiệu suất tổng quát hóa tốt. Một mô hình như vậy tối đa hóa độ chính xác dự đoán. Chúng tôi đã xác định thuật toán học máy phù hợp nhất cho vấn đề hiện tại [tôi. e. phân loại trái cây];

Mã nguồn đã tạo ra bài đăng này có thể được tìm thấy ở đây. Tôi rất vui khi nhận được phản hồi hoặc câu hỏi về bất kỳ vấn đề nào ở trên

Việc sử dụng phân loại là gì?

Trình phân loại trong học máy là một thuật toán tự động sắp xếp hoặc phân loại dữ liệu thành một hoặc nhiều nhóm “lớp. ” Một trong những ví dụ phổ biến nhất là trình phân loại email quét email để lọc chúng theo nhãn lớp. Thư rác hay không thư rác.

3 lớp phân loại là gì?

Phân loại mô tả. Phân loại mô tả được sử dụng để mô tả hình dạng, kích thước, kết cấu hoặc một mẫu của danh từ. .
Dụng cụ phân loại. Hình dạng của các bộ phân loại công cụ mô tả cách một đối tượng được xử lý. .
Phân loại phần tử

phân loại với ví dụ là gì?

Trong khoa học dữ liệu, trình phân loại là một loại thuật toán máy học được sử dụng để gán nhãn lớp cho đầu vào dữ liệu . Một ví dụ là một bộ phân loại nhận dạng hình ảnh để gắn nhãn cho một hình ảnh [e. g. , “ô tô”, “xe tải” hoặc “người”].

Làm cách nào để nhập trình phân loại SVM bằng Python?

Đầu tiên, nhập mô-đun SVM và tạo đối tượng phân loại vectơ hỗ trợ bằng cách chuyển kernel đối số làm kernel tuyến tính trong hàm SVC[] . Sau đó, điều chỉnh mô hình của bạn trên tập huấn luyện bằng cách sử dụng fit[] và thực hiện dự đoán trên tập kiểm tra bằng dự đoán[].

Chủ Đề