当前位置:   article > 正文

Sklearn学习-iris数据集学习_加载iris数据集

加载iris数据集

使用load_iris加载数据集,查看包含的keys

知识点
sklearn的数据集在datasets模块,自带的数据集以"load_"开头
加载的iris数据集是可以字典类型使用
对应的Keys包含 [‘data’, ‘target’, ‘frame’, ‘target_names’, ‘DESCR’, ‘feature_names’, ‘filename’]

from sklearn.datasets import load_iris

# 1-load_iris加载数据集
iris = load_iris()

# 查看包含的keys
iris.keys()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename'])
  • 1
iris['filename']
  • 1
'D:\\Anaconda3\\lib\\site-packages\\sklearn\\datasets\\data\\iris.csv'
  • 1

查看数据的列名,分类目标的名称

“feature_names”:表示数据data每列的特征值的名称
“target_names”:分类目标对应的名称

# 查看数据的列名,分类目标的名称
iris['feature_names']
  • 1
  • 2
['sepal length (cm)',
 'sepal width (cm)',
 'petal length (cm)',
 'petal width (cm)']
  • 1
  • 2
  • 3
  • 4
# DataFrame
import pandas as pd

pd.DataFrame(data=iris['data'],columns=iris['feature_names'])
  • 1
  • 2
  • 3
  • 4
sepal length (cm)sepal width (cm)petal length (cm)petal width (cm)
05.13.51.40.2
14.93.01.40.2
24.73.21.30.2
34.63.11.50.2
45.03.61.40.2
...............
1456.73.05.22.3
1466.32.55.01.9
1476.53.05.22.0
1486.23.45.42.3
1495.93.05.11.8

获取data和target,并打印各自的shape

通过字典的键值可以直接获取到对应的数据
data和target对应的数据类型是numpy的ndarry类型,可以用shape获取其大小

# 分类目标的名称
iris['target_names']
  • 1
  • 2
array(['setosa', 'versicolor', 'virginica'], dtype='<U10')
  • 1
# 获取data和target,并打印各自的shape

data = iris['data']
print(type(data),data.shape)
target = iris['target']
print(type(target),target.shape)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
<class 'numpy.ndarray'> (150, 4)
<class 'numpy.ndarray'> (150,)
  • 1
  • 2

拆分训练集和测试集

在model_selection模块中使用train_test_split对数据集进行训练集和测试集的划分

from sklearn.model_selection import train_test_split
  • 1
'''
第一个参数:数据集
第二个参数:目标集
第三个参数:测试集所占比例
'''
data_train,data_test,target_train,target_test = \
train_test_split(data,target,test_size=0.3)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
data_train.shape
  • 1
(105, 4)
  • 1

使用逻辑回归训练。在测试集上计算准确率

使用模型:linear_modeld的LogisticRegression
步骤:

  • 导入模块linear_modeld.LogisticRegression
  • 初始化模型 LogisticRegression()
  • 训练fit()
  • 查看分数(效果)score()
from sklearn.linear_model import LogisticRegression
  • 1
model = LogisticRegression(max_iter=1000) # 定义最大迭代次数
  • 1
model.fit(data_train,target_train) # 进行训练
  • 1
LogisticRegression(max_iter=1000)
  • 1
# 查看在训练集上评分
model.score(data_train,target_train)
  • 1
  • 2
0.9619047619047619
  • 1
# 查看在测试集上的评分
model.score(data_test,target_test)
  • 1
  • 2
0.9555555555555556
  • 1

在测试集上实现预测

预测,使用模型提供的predict方法执行预测

LogisticRegression(max_iter=1000)
target_predict = model.predict(data_test)

import pandas as pd
df = pd.DataFrame(target_predict,columns=["预测结果"])

df['实际结果'] = target_test
df.shape #(45, 2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

输出和理解混淆矩阵

衡量预测结果的好坏
使用metrics.confusion_matrix

from sklearn.metrics import confusion_matrix
  • 1
# 输出混淆矩阵
confusion_matrix(target_test,target_predict)
  • 1
  • 2
array([[13,  0,  0],
       [ 0, 14,  1],
       [ 0,  1, 16]], dtype=int64)
  • 1
  • 2
  • 3
# 查看分类错误的数据
df.loc[df['实际结果']==0]
  • 1
  • 2
预测结果实际结果
000
200
1100
1300
1800
2000
2200
2500
3100
3300
3900
4000
4400

输出和理解分类报告

from sklearn.metrics import classification_report
  • 1
# 输出混淆矩阵
print(classification_report(target_test,target_predict,
                            target_names=iris['target_names']))
  • 1
  • 2
  • 3
              precision    recall  f1-score   support

      setosa       1.00      1.00      1.00        13
  versicolor       0.93      0.93      0.93        15
   virginica       0.94      0.94      0.94        17

    accuracy                           0.96        45
   macro avg       0.96      0.96      0.96        45
weighted avg       0.96      0.96      0.96        45
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/948183
推荐阅读
  

闽ICP备14008679号