小白学机器学习之鸢尾花分类(Day03)

 相较于昨天的,今天的代码更加完善。

1.所需的库:

load_iris:用于加载鸢尾花(Iris)数据集
NeighborsClassifier:用于分类
train_test_split:用于划分数据集
StandardScaler:用于对数据集进行标准化处理
accuracy_score:用于计算分类任务的准确度
matplotlib.pyplot:主要用于绘制 2D 图形
seaborn:用来制作各种图表,对matplotlib的补充
pandas:用于数据处理和分析

2.大致过程

1. 获取数据集

2 .数据基本处理
3 .数据集预处理-数据标准化
4 .机器学习(模型训练)
5 .模型预测
6 .模型评估

接下来是完整的代码。

# 导入所需的库
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

# 第一步:加载数据集
mydata = load_iris()
def dm01_irisdata_show():

    # 把数据转换成dataframe格式 设置data, columns属性 目标值名称
    mydata_df = pd.DataFrame(mydata['data'], columns=mydata.feature_names)
    # print(mydata_df)
    mydata_df['target'] = mydata.target

    # sns.implot()显示
    col1 = 'sepal length(cm)'
    col2 = 'petal width(cm)'
    sns.lmplot(x=col1, y=col2, data=mydata_df, hue='targets', fit_reg=False)
    plt.xlabel(col1)
    plt.ylabel(col2)
    plt.title('iris')
    plt.show()

# 第二步:数据基本处理

# 划分数据集
x_train, x_test, y_train, y_test = train_test_split(mydata.data, mydata.target, test_size=0.3, random_state=32)
# 查看数据情况
# print(f'数据总数量: {len(mydata.data)}')
# print(f'训练集中的x-特征值: {len(x_train)}')
# print(f'测试集中的x-特征值: {len(x_test)}')
# print(y_train)

# 第三步:数据集预处理
transformer = StandardScaler()
x_train = transformer.fit_transform(x_train)
x_test = transformer.fit_transform(x_test)

# 第四步:模型训练和预测

model = KNeighborsClassifier(n_neighbors=5)
model.fit(x_train, y_train)

# 第五步:模型预测
# print('通过模型查看分类类别-->', model.classes_)
per_data = [[5.4, 3.3, 1.6, 0.7], [4.3, 3.3, 1.4, 0.3]]# 随机给出一些数据
per_data =transformer.transform(per_data)
#print('mydata-->', mydata)
my_pred = model.predict(per_data)
print('mypred:', my_pred)
my_pred = model.predict_proba(per_data) # 获取这些样本属于每个类别的概率
print('mypred:', my_pred)

# 第六步:模型评估
y_predict = model.predict(x_test)
myresult = accuracy_score(y_test, y_predict)
print('myresult-->', myresult)

运行结果:

可以看出,我们预测时给出的数据,都被认为是第一种鸢尾花,模型正确率也是达到了93%。

mypred: [0 0]
mypred: [[0.8 0.2 0. ]
 [1.  0.  0. ]]
myresult--> 0.9333333333333333

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值