python分类_简单机器学习⼊门教程:⽤Python解决简单的⽔
果分类问题
在这篇机器学习⼊门教程中,我们将使⽤Python中最流⾏的机器学习⼯具scikit- learn,在Python中实现⼏种机器学习算法。使⽤简单的数据集来训练分类器区分不同类型的⽔果。
这篇⽂章的⽬的是识别出最适合当前问题的机器学习算法。因此,我们要⽐较不同的算法,选择性能最好的算法。让我们开始吧!
数据
⽔果数据集由爱丁堡⼤学的Iain Murray博⼠创建。他买了⼏⼗个不同种类的橘⼦、柠檬和苹果,并把它们的尺⼨记录在⼀张桌⼦上。密歇根⼤学的教授们对⽔果数据进⾏了些微的格式化,可以从这⾥下载。
让我们先看⼀看数据的前⼏⾏。
%matplotlib inline
计算机一级count函数怎么用
import pandas as pd
import matplotlib.pyplot as plt
fruits = pd.read_table('fruit_data_')
fruits.head()nt4windows
图1
数据集的每⼀⾏表⽰⼀个⽔果块,它由表中的⼏个特征表⽰。
在数据集中有59个⽔果和7个特征:
print(fruits.shape)
(59, 7)
在数据集中有四种⽔果:
print(fruits['fruit_name'].unique())python入门教程下线阅读
[“苹果”柑橘”“橙⼦”“柠檬”]
python计算工资除了柑橘,数据是相当平衡的。我们只好接着进⾏下⼀步。
upby('fruit_name').size())
图2
import seaborn as sns
plt.show()
图3
可视化
每个数字变量的箱线图将使我们更清楚地了解输⼊变量的分布:
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()
图4
看起来颜⾊分值近似于⾼斯分布。
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()
图5
⼀些成对的属性是相关的(质量和宽度)。这表明了⾼度的相关性和可预测的关系。
ls.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')
图6
统计摘要开源的cms系统
图7
我们可以看到数值没有相同的缩放⽐例。我们需要将缩放⽐例扩展应⽤到我们为训练集计算的测试集上。创建训练和测试集,并应⽤缩放⽐例
del_selection import train_test_split
X_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 = ansform(X_test)
构建模型
逻辑回归
在安装mysql数据安装包怎么没有了from sklearn.linear_model import LogisticRegression
logreg = 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)))
训练集中逻辑回归分类器的精确度:0.70
测试集中逻辑回归分类器的精确度:0.40
决策树
import DecisionTreeClassifier
clf = DecisionTreeClassifier().fit(X_train, y_train)
print('Accuracy of Decision Tree classifier on training set: {:.2f}'
.format(clf.score(X_train, y_train)))
print('Accuracy of Decision Tree classifier on test set: {:.2f}'
.format(clf.score(X_test, y_test)))
训练集中决策树分类器的精确度:1.00
测试集中决策树分类器的精确度:0.73
K-Nearest Neighbors(K-NN )
ighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
print('Accuracy of K-NN classifier on training set: {:.2f}'
.format(knn.score(X_train, y_train)))
print('Accuracy of K-NN classifier on test set: {:.2f}'
.format(knn.score(X_test, y_test)))
训练集中K-NN 分类器的精确度:0.95
测试集中K-NN 分类器的精确度:1.00
线性判别分析
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis lda = LinearDiscriminantAnalysis()
lda.fit(X_train, y_train)
print('Accuracy of LDA classifier on training set: {:.2f}'
.format(lda.score(X_train, y_train)))
print('Accuracy of LDA classifier on test set: {:.2f}'

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。