学习篇Python:sklearn
python实现简单的决策树
'''
自助聚合:随机从N个样本中抽取M个样本,构建一棵决策树,重复此过程,共形成B棵树,构成每棵树的样本不同且随机,以此来削弱少数强势样本对模型预测结果的影响。
sklearn.datasets:标准数据集
sklearn.utils:辅助工具
sklearn.tree:决策树(单个)
model = st.DecisionTreeRegressor(max_depth = 4)
max_depth:最大树的高度
model.fit(train_x, train_y)
pred_test_y = model.predict(test_x)
sklearn.ensemble:算法集合
sklearn.metrics:模型评价(0-1)
sm.r2_score(test_y, pred_test_y)
随机森林:在自助聚合的基础上,每次不但随机选择部分样本(行),而且还要随机选择部分特征(列),构建组成决策树林的每个决策树。
model = se.RandomForestRegressor(max_depth = 10, n_estimators = 1000, min_samples_split = 2)
min_samples_split:每棵树的最小样本数
正向激励:开始先为样本空间中的每个样本随机分配初始权重,形成一棵决策树,用该树预测训练集中的样本,将预测错误的样本权重予以提升,再构建一棵决策树,如此重复共构建B棵带有不同权重分布的决策树。
model = se.AbaBoostRegressor(st.DecisionTreeRegressor(max_depth = 4), n_estimators = 400, random_state = 7)
n_estimators:正向激励树的数量
random_state:样本和特征随机提取
特征重要性:(仅决策树包含)
model.feature_importances_(学习参数下划线:学习过程中拿到)
特征重要性除了与模型算法有关还与数据采集的时间粒度有关
'''
import csv
import numpy as np
import sklearn.utils as su
import sklearn.ensemble as se
import sklearn.metrics as sm
import matplotlib.pyplot as mp
with open("bike_day.csv", "r") as f:
reader = csv.reader(f)
x, y = [], []
for row in reader:
x.append(row[2:13])
y.append(row[-1])
fn_day = np.array(x[0])
x = np.array(x[