【数学建模导论】Task04 机器学习

前言

Problem-Based Learning.
以解决问题为导向进行学习,培养工具思维

本章会接触到大量的算法,
一方面要理解算法的基本原理,
另一方面又要能针对实际问题进行灵活应用。

w(゚Д゚)w 要长脑子了!
本篇章先学习快速使用 scikit-learn 完成机器学习任务,
后续再对模型展开深入学习。(在本篇博客进行更新修改)

机器学习本身就是统计模型的延伸
学习过程中,我们完全可以把机器学习算法视作工具去使用。

使用scikit-learn完成机器学习任务

对特征的编码

鼠标右键 -> 在新标签页中打开图像
在这里插入图片描述

对特征的选择(与交叉验证)

鼠标右键 -> 在新标签页中打开图像
在这里插入图片描述

数据集的切分与打乱

鼠标右键 -> 在新标签页中打开图像
在这里插入图片描述

评估指标接口

分类问题

鼠标右键 -> 在新标签页中打开图像
在这里插入图片描述

回归问题

鼠标右键 -> 在新标签页中打开图像
在这里插入图片描述

聚类问题

鼠标右键 -> 在新标签页中打开图像
在这里插入图片描述

Python 编程实现

准备

访问 Graphviz 的官方网站 (https://www.graphviz.org/download/) 下载并安装 Graphviz。
安装过程中,确保选择“Add application directory to your system path”选项

导入数据并处理数据

import numpy as np
import pandas as pd
# 鸢尾花数据集,红酒数据集,乳腺癌数据集,糖尿病数据集
from sklearn.datasets import load_iris,load_wine,load_breast_cancer,load_diabetes

# 回归重要指标
from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error
# 分类重要指标
from sklearn.metrics import accuracy_score, confusion_matrix, f1_score, precision_recall_curve, roc_auc_score

from sklearn.model_selection import train_test_split #训练集训练集分类器
import graphviz #画文字版决策树的模块
import pydotplus #画图片版决策树的模块
# from IPython.display import ./src/image #画图片版决策树的模块

iris = load_iris()
print(iris.data)              # 数据
print(iris.target_names)      # 标签名
print(iris.target)            # 标签值
print(iris.feature_names)     # 特证名(列名)

iris_dataframe = pd.concat([pd.DataFrame(iris.data),pd.DataFrame(iris.target)],axis=1)
print(iris_dataframe)

Xtrain, Xtest, Ytrain,Ytest = train_test_split(iris.data,iris.target,test_size=0.3)

随后选择对应接口创建模型,
输入数据通过 fit 方法进行训练,
然后进行 predict 并评估指标即可。

from sklearn.linear_model import LogisticRegression,LinearRegression
from sklearn.neighbors import KNeighborsRegressor,KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeRegressor,DecisionTreeClassifier
from sklearn.ensemble import RandomForestRegressor,RandomForestClassifier
from sklearn.ensemble import ExtraTreesRegressor,ExtraTreesClassifier
from sklearn.ensemble import AdaBoostRegressor,AdaBoostClassifier
from sklearn.ensemble import GradientBoostingRegressor,GradientBoostingClassifier

clf = RandomForestClassifier()
clf.fit(Xtrain, Ytrain)
Ypredict=clf.predict(Xtest)
print(r2_score(Ypredict,Ytest))
# 其中,决策树、随机森林等具有树形结构的基学习器可以把树形结构打印出来并保存为PDF或png文件

from sklearn import tree

clf = clf.estimators_[0]

tree_data = tree.export_graphviz(

    clf

    ,feature_names =iris.feature_names

    ,class_names = iris.target_names#也可以自己起名

    ,filled = True #填充颜色

    ,rounded = True #决策树边框圆形/方形

)

graph1 = graphviz.Source(tree_data.replace('helvetica','Microsoft YaHei UI'), encoding='utf-8')

graph1.render('./iris_tree')

Read more

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机动人心

解密未来,一文解锁一周动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值