栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

人工智能入门——机器学习小案例(三)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

人工智能入门——机器学习小案例(三)

1、模型评估流程
  1. 评估流程#1:将整个数据集用于训练和测试
    步骤1:使用整个数据集进行模型训练
    步骤2:使用相同的数据集进行测试,并通过对比预测结果与实际结果来评估模型表现
    训练数据与测试数据相同导致得问题:
    ①训练模型得最终目标是为了预测新数据对应得结果,而此时没有新数据
    ②最大化训练准确率通常会导致模型复杂化(如增加维度等),因此将降低模型的通用性
    ③过度复杂模型容易导致训练数据的过度拟合(绿色线)

    准确率:正确预测的比例,用于评估分类模型表现得常用指标
  2. 评估流程#2:分离训练数据与测试数据
    步骤1:把数据分成两部分:训练集、测试集
    步骤2:使用训练集数据进行模型训练
    步骤3:使用测试集数据进行预测,从而评
    估模型表现
  3. 模型关键参数选择
    目标:确定合适的参数(组),提高模型预测准确率
    方法:
    ① 遍历参数组合,建立对应的模型
    ② 使用训练集数据进行模型训练
    ③使用测试集数据进行预测,评估每个模型的表现
    ④ 通过图型展示参数(组)与准确率的关系,确定合适的参数(组)
2、实操过程

1、将整个数据集用于训练和测试
① 通过sklearn自带数据包加载iris数据

from sklearn import datasets
iris = datasets.load_iris()
x = iris.data
y = iris.target

② 模型调用

from sklearn.neighbors import KNeighborsClassifier
knn_5 = KNeighborsClassifier(n_neighbors=5)
knn_5.fit(x,y)
y_pred = knn_5.predict(x)
print(y_pred)
print(y_pred.shape)

结果:

③ 准确率计算

from sklearn.metrics import accuracy_score
# 计算k=5时的准确率
print(accuracy_score(y,y_pred))
# 计算k=1时的准确率
knn_1 = KNeighborsClassifier(n_neighbors=1)
knn_1.fit(x,y)
y_pred = knn_1.predict(x)
print(accuracy_score(y,y_pred))

结果:


2、分离训练数据与测试数据
① 分离数据,分成四个部分,分别时训练输入数据、预测输入数据、训练的结果、预测的结果

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.4)

② 分离后数据的维度确认

print(x_train.shape,x_test.shape,y_train.shape,y_test.shape)

结果:

③ 分离后数据集的训练与评估

knn_5_s = KNeighborsClassifier(n_neighbors=5)
knn_5_s.fit(x_train,y_train)
y_train_pred = knn_5_s.predict(x_train)
y_test_pred = knn_5_s.predict(x_test)
# 分离后模型预测的准确率
print(accuracy_score(y_train,y_train_pred))
print(accuracy_score(y_test,y_test_pred))

结果:


④ 令k:1-25,遍历所有有可能的参数组合

k_range = list(range(1,26))
print(k_range)

score_train = []
score_test = []
for k in k_range:
    knn = KNeighborsClassifier(n_neighbors = k)
    knn.fit(x_train,y_train)
    y_train_pred = knn.predict(x_train)
    y_test_pred = knn.predict(x_test)
    score_train.append(accuracy_score(y_train,y_train_pred))
    score_test.append(accuracy_score(y_t

for k in k_range:
    print(k,score_train[k-1])

for k in k_range:
    print(k,score_test[k-1])

结果:


⑤ 图像直观展示

# 图形展示
# 导入Matplotlib图库并使用图像在notebook中展示
import matplotlib.pyplot as plt
%matplotlib inline
# 展示k值与训练数据集预测准确率之间的关系
plt.plot(k_range,score_train)
plt.xlabel('K(KNN model)')
plt.ylabel('Training Accuracy')

# 展示k值与测试数据集预测准确率之间的关系
plt.plot(k_range,score_test)
plt.xlabel('K(KNN model)')
plt.ylabel('Training Accuracy')

结果:


⑥ 对新数据进行预测
从图像上可知,k=11时复杂度较小且准确率较高,选择k=11进行预测

knn_11 = KNeighborsClassifier(n_neighbors=11)
knn_11.fit(x_train,y_train)
y_train_pred = knn_11.predict([[1,2,3,4]])
print(y_train_pred)

结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/990933.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号