机器学习API建模、预测结果可视化(以随机森林为例)
1. 建模步骤
1) 通过Scikit-Learn导入适当的评估器类,选择模型类。
2) 用合适的数值对模型类进行实例化,配置模型超参数。
3) 整理数据,获取特征矩阵和目标数组。
4) 调用模型实例的fit()方法对数据进行拟合。
5) 对新数据应用模型:
Ⅰ. 在监督学习模型中:通常使用predict()方法预测新数据的标签。
Ⅱ.在非监督学习模型中,通常使用transform()或predict()方法转换或推断数据的性质。
2. 具体代码
以机器学习中国最广为人知的鸢尾花数据分析为例,代码如下:
import os
import pandas as pd
import requests
PATH = r'F:\研究生文件\Python代码/'
r = requests.get('http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data')
with open(PATH + 'iris.data','w') as f:
f.write(r.text)
os.chdir(PATH)
res = open(PATH + 'iris.data')
df = pd.read_csv(res,names=['sepal length','sepal width','petal length','petal width','class'])
#step1:导入随机森林分类模型/切分训练集与测试集模块
from sklearn.ensemble import RandomForestClassifier
from sklearn.cross_validation import train_test_split
#step2:设置超参数,使用10个决策树,最多允许5层判别,以防过拟合(fitting)
clf = RandomForestClassifier(max_depth=5,n_estimators=10)
#step:3设置特征矩阵和目标数组
X = df.iloc[:,:4]
y = df.iloc[:,4]
#切分训练集、测试集,30%数据用于测试
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3)
#step4:拟合数据、预测数据
#拟合训练集
clf.fit(X_train,y_train)
#预测测试集
y_pred = clf.predict(X_test)
#将预测值与实际值对比,判断模型预测效果
rf = pd.DataFrame(list(zip(y_pred,y_test)),columns=['predicted','actual'])
rf['correct'] = rf.apply(lambda r: 1 if r['predicted']==r['actual'] else 0,axis=1)
rf.head()
- 代码小知识:
- 如果直接输入pd.read_csv(r’F:\研究生文件\Python代码/’+‘iris.data’)会报错:OSError: Initializing from file failed。原因是路径中出现了中文字符。所以先用res = open(PATH + ‘iris.data’),再用read_csv()函数解决问题
- apply函数,在DataFrame中增加了 一列,如果预测值与实际值相等则值为1,否则为0。
rf['correct'] = rf.apply(lambda r: 1 if r['predicted']==r['actual'] else 0,axis=1)