人工智能案例解释
下面代码可以屏蔽警告
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['预测值']))