sklearn初探之iris训练集

1. 探索数据

# 导入sklearn的包
from sklearn import datasets
# 导入time包,增加等待时间
import time 

# 加载iris的数据
iris = datasets.load_iris()
# 显示iris的数据结构,共150行,4列
# 4列的内容分别是花萼长度,花萼宽度,花瓣长度,花瓣宽度
print(iris.data.shape)
(150, 4)
# 显示iris的数据结果
# print(iris.data)
iris.data[:6] #显示前6行数据
array([[5.1, 3.5, 1.4, 0.2],
       [4.9, 3. , 1.4, 0.2],
       [4.7, 3.2, 1.3, 0.2],
       [4.6, 3.1, 1.5, 0.2],
       [5. , 3.6, 1.4, 0.2],
       [5.4, 3.9, 1.7, 0.4]])
# iris.target用0、1和2三个整数分别代表了花的三个品种
# 三种花分别是山鸢尾花(Iris Setosa),变色鸢尾花(Iris Versicolor),维吉尼亚鸢尾花(Iris Virginica)
print(iris.target)
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]

2. 机器学习部分

import numpy as np
from sklearn import neighbors, datasets
# KNN中的K值,默认值是5
n_vecinos = 5
# 导入花的数据
iris = datasets.load_iris()
# 保留花萼长度,花萼宽度,花瓣长度,花瓣宽度,给予X
X = iris.data[:,:2]
# 将目标属性赋予y
y = iris.target
#应用KNN Classifier
clf = neighbors.KNeighborsClassifier(n_vecinos, weights='distance')

# weights参数是用于预测的权重函数。可选参数如下:
# - ‘uniform’ : 统一的权重. 在每一个邻居区域里的点的权重都是一样的。
# - ‘distance’ : 权重点等于他们距离的倒数。使用此函数,更近的邻居对于所预测的点的影响更大。
# - [callable] : 一个用户自定义的方法,此方法接收一个距离的数组,然后返回一个相同形状并且包含权重的数组。
clf
# 显示模型的一些参数,算法使用默认的 ‘auto’,停止建子树的叶子节点阈值leaf_size为默认值30,距离度量metric使用闵可夫斯基距离 “minkowski”,距离度量附属参数p=2,所以是欧氏距离;
# 距离度量其他附属参数metric_params为无None,并行处理任务数n_jobs为1,即所有的CPU核都参与计算。权重weights选择的是distance
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
           metric_params=None, n_jobs=1, n_neighbors=5, p=2,
           weights='distance')
# 使用X作为训练数据,y作为目标值来拟合模型。
clf.fit(X, y)
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
           metric_params=None, n_jobs=1, n_neighbors=5, p=2,
           weights='distance')
# np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的merge()。
a, b = map(int, input("请分别输入花萼长度,花萼宽度,以空格分割").split())
print("你输入的花萼长度是: "+ str(a))
print("你输入的花萼宽度是: "+ str(b))
请分别输入花萼长度,花萼宽度,以空格分割 8 2


你输入的花萼长度是: 8
你输入的花萼宽度是: 2
nuevo_dato = np.c_[a, b]
nuevo_dato
array([[8, 2]])
# 给提供的数据预测对应的标签。
clase_predicha = clf.predict(nuevo_dato)
# 返回给定测试数据和标签的平均准确值。
print(clf.score(X,y))
# 预测的准确值非常高,证明结果比较好
0.9266666666666666
flower = np.array(["山鸢尾花(Iris Setosa)", "变色鸢尾花(Iris Versicolor)", "维吉尼亚鸢尾花(Iris Virginica)"])
print("根据您输入的各项数据," + "预测您的花是" + str(flower[clase_predicha]))
time.sleep(3)
print("我们机器学习模型预测的准确值如下图:")
time.sleep(3)
根据您输入的各项数据,预测您的花是['维吉尼亚鸢尾花(Iris Virginica)']
我们机器学习模型预测的准确值如下图:

3. 绘图

# 加载包
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
# 指定绘图颜色,颜色映射
cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])
cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF'])
X = iris.data[:,:2]
y = iris.target
clf = neighbors.KNeighborsClassifier(n_vecinos, weights='distance')
clf.fit(X, y)
#nuevo_dato = np.c_[8, 4]
#clase_predicha = clf.predict(nuevo_dato)


h = .02  # step size in the mesh
weights='distance'


# 确认训练集的边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1

# 生成随机数据来做测试集,然后作预测
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
                         np.arange(y_min, y_max, h))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])

# 画出测试集数据
Z = Z.reshape(xx.shape)
plt.figure()
plt.pcolormesh(xx, yy, Z, cmap=cmap_light)

# 也画出所有的训练集数据
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold,
                edgecolor='k', s=20)
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title("3-Class classification (k = %i, weights = '%s')"
              % (n_vecinos, weights))

plt.show()

# 生成的图如下,大多数数据拟合不错,仅有少量的异常点不在范围内。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容