数学建模老哥-python基础和机器学习(二)基于鸢尾花数据集简单机器学习

该笔记为个人学习笔记,看的课程是B站-数学建模老哥:2、机器学习数学建模项目入门_哔哩哔哩_bilibili

目录

一、导入类库

二、导入数据集

三、概述数据

        1、数据的维度

        2、查看数据自身

        3、统计描述

        4、数据分类的情况

四、数据可视化

五、评估算法

        1、分离出评估数据集

        2、生成6种新模型预测新数据

        3、训练

六、评估

七、总代码


基于鸢尾花数据集进行简单机器学习。附上python代码。

鸢尾花数据集链接:鸢尾花数据集(完整版)_数据集-飞桨AI Studio星河社区 (baidu.com)

一、导入类库

from pandas import read_csv  # pandas 数据分析库
from pandas.plotting import scatter_matrix #数据可视化
from matplotlib import pyplot
from sklearn.model_selection import train_test_split  # sklearn机器学习库
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC

二、导入数据集

# 1、导入数据集
filename = 'D:/桌面/数学建模_机器学习/iris.csv'  #根据自己的目录写
# 数据集特征
names = ['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm', 'class']
# 导入为自己的数据集
dataset = read_csv(filename, names=names)

三、概述数据

        1、数据的维度

# 打印数据维度
print('数据维度:行%s,列%s'%dataset.shape)  #数据维度:行151,列5

        2、查看数据自身

# 打印数据集前10行
print(dataset.head(10))

        3、统计描述

#描述性统计
print(dataset.describe())

        4、数据分类的情况

#数据分布情况
print(dataset.groupby('class').size())

四、数据可视化

# 3、数据可视化
dataset.plot(kind='box', subplots=True, layout=(2, 2), sharex=False,
             sharey=False)  # 箱线图 subplots--多个图 layout--按照2行2列摆放 sharex--保留x轴
dataset.hist()  # 直方图
scatter_matrix(dataset)  # 散点图
pyplot.show()

五、评估算法

        1、分离出评估数据集

# 4、分离数据集 八二分
array = dataset.values
# XY轴分离
X = array[:, 0:4]  # 前四列
Y = array[:, 4]
validation_size = 0.2  # 测试集占20%
seed = 7  # 种子随机在7个模式
X_train, X_validation, Y_train, Y_validation = train_test_split(X, Y, test_size=validation_size, random_state=seed,
                                                                shuffle=True)

        2、生成6种新模型预测新数据

models = {}
models['LR'] = LogisticRegression()  # 逻辑回归模型
models['KNN'] = KNeighborsClassifier()  # K最近邻
models['LDA'] = LinearDiscriminantAnalysis()  # 线性判别分析
models['CART'] = DecisionTreeClassifier()  # 分类与回归树(决策树)
models['SVM'] = SVC()  # 支持向量机
models['NB'] = GaussianNB()  # 朴素贝叶斯(高斯分布)

        3、训练

# 训练
results = []
# 每个值在6个模型里面循环
for key in models:
    kflod = KFold(n_splits=10, random_state=seed, shuffle=True)  # 10次随机交叉检验
    cv_results = cross_val_score(models[key], X_train, Y_train, cv=kflod, scoring='accuracy')  # 导出每个模型的准确度
    results.append(cv_results)
    print('%s:%f(%f)' % (key, cv_results.mean(), cv_results.std()))

六、评估

# 评估
print('评估......exe....')
svm = SVC()
svm.fit(X_train, Y_train)  # fit方法用于训练模型,接收训练数据的特征集和标签集作为输入
predictions = svm.predict(X_validation)  # 使用训练好的SVM模型对验证数据特征集X_validation进行预测,得到预测结果predictions
print(accuracy_score(Y_validation, predictions))  # 计算并打印模型在验证集上的准确度,即预测正确的样本数占总样本数的比例
print(confusion_matrix(Y_validation, predictions))  # 打印混淆矩阵,它显示了实际类别与预测类别之间的关系
print(classification_report(Y_validation, predictions))  # 打印分类报告,它包含了主要分类指标的详细文本报告,如精确度、召回率、F1分数等

七、总代码

from pandas import read_csv  # pandas 数据分析库
from pandas.plotting import scatter_matrix  # 数据可视化
from matplotlib import pyplot
from sklearn.model_selection import train_test_split  # sklearn机器学习库
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC

# 1、导入数据集
filename = 'D:/桌面/数学建模_机器学习/iris.csv'
# 数据集特征
names = ['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm', 'class']
# 导入为自己的数据集
dataset = read_csv(filename, names=names)
# 打印数据维度
print('数据维度:行%s,列%s' % dataset.shape)  # 数据维度:行151,列5
# 打印数据集前10行
print(dataset.head(10))

# 2、数据概述分析
# 描述性统计
print(dataset.describe())
# 数据分布情况
print(dataset.groupby('class').size())

# 3、数据可视化
dataset.plot(kind='box', subplots=True, layout=(2, 2), sharex=False,
             sharey=False)  # 箱线图 subplots--多个图 layout--按照2行2列摆放 sharex--保留x轴
dataset.hist()  # 直方图
scatter_matrix(dataset)  # 散点图
pyplot.show()

# 4、分离数据集 八二分
array = dataset.values
# XY轴分离
X = array[:, 0:4]  # 前四列
Y = array[:, 4]
validation_size = 0.2  # 测试集占20%
seed = 7  # 种子随机在7个模式
X_train, X_validation, Y_train, Y_validation = train_test_split(X, Y, test_size=validation_size, random_state=seed,
                                                                shuffle=True)

# 算法
models = {}
models['LR'] = LogisticRegression()  # 逻辑回归模型
models['KNN'] = KNeighborsClassifier()  # K最近邻
models['LDA'] = LinearDiscriminantAnalysis()  # 线性判别分析
models['CART'] = DecisionTreeClassifier()  # 分类与回归树(决策树)
models['SVM'] = SVC()  # 支持向量机
models['NB'] = GaussianNB()  # 朴素贝叶斯(高斯分布)

# 训练
results = []
# 每个值在6个模型里面循环
for key in models:
    kflod = KFold(n_splits=10, random_state=seed, shuffle=True)  # 10次随机交叉检验
    cv_results = cross_val_score(models[key], X_train, Y_train, cv=kflod, scoring='accuracy')  # 导出每个模型的准确度
    results.append(cv_results)
    print('%s:%f(%f)' % (key, cv_results.mean(), cv_results.std()))

# 评估
print('评估......exe....')
svm = SVC()
svm.fit(X_train, Y_train)  # fit方法用于训练模型,接收训练数据的特征集和标签集作为输入
predictions = svm.predict(X_validation)  # 使用训练好的SVM模型对验证数据特征集X_validation进行预测,得到预测结果predictions
print(accuracy_score(Y_validation, predictions))  # 计算并打印模型在验证集上的准确度,即预测正确的样本数占总样本数的比例
print(confusion_matrix(Y_validation, predictions))  # 打印混淆矩阵,它显示了实际类别与预测类别之间的关系
print(classification_report(Y_validation, predictions))  # 打印分类报告,它包含了主要分类指标的详细文本报告,如精确度、召回率、F1分数等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值