前言
Problem-Based Learning.
以解决问题为导向进行学习,培养工具思维
本章会接触到大量的算法,
一方面要理解算法的基本原理,
另一方面又要能针对实际问题进行灵活应用。
w(゚Д゚)w 要长脑子了!
我们完全可以把机器学习算法视作工具去使用。
机器学习本身就是统计模型的延伸
使用scikit-learn完成机器学习任务
对特征的编码
鼠标右键 -> 在新标签页中打开图像
对特征的选择(与交叉验证)
鼠标右键 -> 在新标签页中打开图像
数据集的切分与打乱
鼠标右键 -> 在新标签页中打开图像
评估指标接口
分类问题
鼠标右键 -> 在新标签页中打开图像
回归问题
鼠标右键 -> 在新标签页中打开图像
聚类问题
鼠标右键 -> 在新标签页中打开图像
Python 编程实现
导入数据并处理数据
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
- 数学建模导论 intro-mathmodel
(知识密度大、代码理论兼备)
https://datawhalechina.github.io/intro-mathmodel/#/ - Python科学计算 scientific-computing(数学建模导论的前置课程)
(知识密度小、代码实操强悍)
https://datawhalechina.github.io/scientific-computing/#/