sklearn学习,一步步带你做出三个入门案例鸢尾花分类、波士顿房价预测、手写数字识别,简单易懂。

人工智能案例解释

下面代码可以屏蔽警告

import warnings
warnings.filterwarnings("ignore")

由于我们真实环境使用数据的时候往往是拿到一个表格,所以本教程中所有数据都整理成表格使用的,并没有用原始已经处理好的数据。

鸢尾花分类

预先获取鸢尾花数据,运行如下代码:

from sklearn import datasets
import pandas as pd
iris =datasets.load_iris()
iris_X = iris.data    # 鸢尾花特征
iris_Y = iris.target  # 鸢尾花标签
# 直接用上面两个训练也没有问题,本教程将它们整理成表格,更贴近现实。
iris_data = pd.DataFrame(iris.data,columns=['花萼长度','花萼宽度','花瓣长度','花瓣宽度'])
iris_data['种类'] = iris.target
iris_data.to_excel('鸢尾花数据.xlsx',index=None)

引入鸢尾花数据集

import pandas as pd
iris = pd.read_excel('鸢尾花数据.xlsx')

将鸢尾花数据集分为特征和标签

1. 特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度2. 标签:种类

X = iris[['花萼长度', '花萼宽度', '花瓣长度', '花瓣宽度']]
Y = iris['种类']

将特征和标签对应打乱并按比例分割成训练集和测试集

from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(
    X, Y, test_size=0.3
)  # 第一个参数:特征   第二个参数:标签   test_size:训练集与测试集的比值

训练集:

测试集:

引入knn分类算法

from sklearn.neighbors import KNeighborsClassifier  # K近邻
knn = KNeighborsClassifier()

投喂数据

knn.fit(X_train, Y_train)

预测数据

data = pd.DataFrame()
data['真实值'] = Y_test
data['预测值'] = knn.predict(X_test)

模型评估

from sklearn.metrics import classification_report
print(classification_report(data['真实值'],data['预测值']))

波士顿房价预测

预先获取波士顿房价数据,运行如下代码

import pandas as pd
from sklearn import datasets
loaded_data = datasets.load_boston()
data_X = loaded_data.data
data_Y = loaded_data.target
data = pd.DataFrame(data_X,columns=loaded_data.feature_names)
data['房价值'] = data_Y
data.to_excel('波士顿房价数据.xlsx',index=None)

读取波士顿房价数据

import pandas as pd
data = pd.read_excel('波士顿房价数据.xlsx')

将波士顿房价数据集分为特征和标签

特征:人均犯罪率、平均住宅房间数等等标签:房价值

X = data.iloc[:,:-1]
Y = data.iloc[:,-1]

将特征和标签对应打乱并按比例分割成训练集和测试集

from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(
    X, Y, test_size=0.3
)  # 第一个参数:特征   第二个参数:标签   test_size:训练集与测试集的比值

表格有点多,这里就不展示了,大家可以自己打印一下这四个表。

引入线性回归算法

from sklearn.linear_model import LinearRegression
lr = LinearRegression()

投喂数据

lr.fit(X_train,Y_train)

预测数据

data = pd.DataFrame()
data['真实值'] = Y_test
data['预测值'] = lr.predict(X_test)

画图看更直观

import matplotlib.pyplot as plt
plt.scatter(range(len(X_test)),data['真实值'])    # 画散点图
plt.plot(range(len(X_test)),data['预测值'],c='g') # 画折线图
plt.show()

模型评估

print('模型评分:'+str(lr.score(X_test,Y_test)))

手写数字识别

读取手写数字图片

from sklearn import datasets
digits = datasets.load_digits

将手写数字数据分为特征(图片)和标签(对应数字),并且查看第一个数据

X = digits.images
Y = digits.target
import matplotlib.pyplot as plt
plt.imshow(X[0])
print(Y[0])

将特征转化为1维数据

X = digits.images.reshape((len(X), -1))

将特征和标签对应打乱并按比例分割成训练集和测试集

from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(
    X, Y, test_size=0.3
)  # 第一个参数:特征   第二个参数:标签   test_size:训练集与测试集的比值

引入向量分类器

from sklearn.svm import SVC
classifier = SVC()

投喂数据

classifier.fit(X_train,Y_train)

预测数据

import pandas as pd
data = pd.DataFrame()
data['真实值'] = Y_test
data['预测值'] = classifier.predict(X_test)

画图看更直观

plt.imshow(X_test[0].reshape(8,8))

模型评估

from sklearn.metrics import classification_report
print(classification_report(data['真实值'],data['预测值']))

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值