机器学习入门概念了解

推荐书籍:《《Python机器学习基础教程》 — [德] 安德里亚斯·穆勒  [美] 莎拉·吉多

利用scikit_learn已有的数据,对监督学习-三分类问题的入门了解:

鸢尾花(Iris)有三个品种:setosa、versicolor 或 virginica。

鸢尾花(Iris)数据集包含两个 NumPy 数组:一个包含数据,在scikit-learn中被称为X;一个包含正确的输出或预期输出,被称为y。数组X是特征的二维数组,每个数据点对应一行,每个特征对应一列。数组y是一维数组,里面包含一个类别标签,对每个样本都是一个 0 到 2 之间的整数。

鸢尾花(Iris)数据集包含两个 NumPy 数组:一个包含数据,在scikit-learn中被称为X;一个包含正确的输出或预期输出,被称为y。数组X是特征的二维数组,每个数据点对应一行,每个特征对应一列。数组y是一维数组,里面包含一个类别标签,对每个样本都是一个 0 到 2 之间的整数。

法来构建模型,传入训练数据(X_train)和训练输出(y_trian)作为参数。我们用score方法来评估模型,该方法计算的是模型精度。我们将score方法用于测试集数据和测试集标签,得出模型的精度约为 97%,也就是说,该模型在测试集上 97% 的预测都是正确的。

因为是基于scikit_learn,所以数据格式必须是NumPy 数组:

1. 实例化鸢尾花数据:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import numpy as np
# k 近邻分类算法是在neighbors模块的KNeighborsClassifier类
from sklearn.neighbors import KNeighborsClassifier  


# 获取鸢尾花的训练集
iris_dataset = load_iris()
# random_state参数指定了随机数生成器的种子,保证多次运行程序输出集是相同的
X_train, X_text, y_train, y_text = train_test_split(iris_dataset['data'], iris_dataset['target'],random_state=0) 
iris_dataset: scikit_learn里有鸢尾花150个数据集,实例化对象后,获取所有数据集。

train_test_split:可以将150个数据集随机打散,自动分为75%的训练集和25%的测试集,训练集的数据用来构建模型,测试集的数据用来校对这个模型的准确性。

 2.接下来实现k近邻分类算法的预测模型:


# KNeighborsClassifier,里面只保存了训练集
knn = KNeighborsClassifier(n_neighbors=1)   # 实例化对象

# fit:基于训练集来构建模型
knn.fit(X_train, y_train)

KNeighborsClassifier:KNeighborsClassifier最重要的参数就是邻居的数目,这里我们设为1。

fit:基于训练集来构建模型。一个fit函数搞定。

3. 给定一个未知鸢尾花数据,预测属于哪一个分类:

x_new = np.asarray([[5.7, 3.6, 1.6, 1.6]])  # 一个未知品种的鸢尾花,格式必须是数组
# 预测品种
prediction = knn.predict(x_new)
print('预测结果:{}'.format(prediction))
print('预测的品种:{}'.format(iris_dataset['target_names'][prediction]))

结果如下:

预测结果:[0]
预测的品种:['setosa']

4. 如何判断模型预测出来的结果是否正确: 

对测试数据中的每朵鸢尾花进行预测,并将预测结果与标签(已知的品种)进行对比。我们可以通过计算精度(accuracy)来衡量模型的优劣。

# 评估模型,判断预测结果是否正确,利用测试集的数据,来衡量精度
y_pred = knn.predict(X_text)
print('测试集的结果预测:{}'.format(y_pred))
print('预测精确度:{:.2f}'.format(np.mean(y_pred == y_text)))
# 还可以使用knn对象的score方法来计算测试集的精度
print('预测精确度:{:.2f}'.format(knn.score(X_text, y_text)))

predict:

score:knn对象的score方法来计算测试集的精度,结果如下:

测试集的结果预测:[2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0
 2]
预测精确度:0.97
预测精确度:0.97 

总结:主要分为 1、构建训练集,测试集(train_test_split方法) 2、基于训练集来构建模型(KNeighborsClassifier类下的fit方法)3、让模型对未知数据作出预测(predict方法)4、评估模型(score方法)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值