Python机器学习--算法实现--常用算法在Sklearn中的回归算法关键参数详解

常用算法在Sklearn中的关键参数详解

回归算法

线性回归算法

from sklearn.linear_model import LinearRegression

LinearRegression(fit_intercept=True,normalize=False,copy_X=True,n_jobs=1)
 
'''
参数含义:
1.fit_intercept:布尔值,指定是否需要计算线性回归中的截距,即b值。如果为False,
那么不计算b值。
2.normalize:布尔值。如果为False,那么训练样本会进行归一化处理。
3.copy_X:布尔值。如果为True,会复制一份训练数据。
4.n_jobs:一个整数。任务并行时指定的CPU数量。如果取值为-1则使用所有可用的CPU。

属性
1.coef_:权重向量
2.intercept_:截距b值

方法:
1.fit(X,y):训练模型。
2.predict(X):用训练好的模型进行预测,并返回预测值。
3.score(X,y):返回预测性能的得分。计算公式为:score=(1 - u/v)
其中u=((y_true - y_pred) ** 2).sum(),v=((y_true - y_true.mean()) ** 2).sum()
score最大值是1,但有可能是负值(预测效果太差)。score越大,预测性能越好。
'''

KNN回归算法

from sklearn.neighbors import KNeighborsRegressor

KNeighborsRegressor(n_neighbors=5, weights='uniform', algorithm='auto', leaf_size=30, p=2, 
					metric='minkowski', metric_params=None, n_jobs=1, **kwargs)

'''
参数: 
1.n_neighbors: 一个整数,指定k值。
2.weights: 一字符串或者可调用对象,指定投票权重类型。即这些邻居投票权可以为相同或者不同。 
   uniform: 本节点的所有邻居节点的投票权重都相等。
   distance: 本节点的所有邻居节点的投票权重与距离成反比,即越近节点,其投票权重越大。
   [callable]: 一个可调用对象,它传入距离的数组,返回同样形状的权重数组。
3.algorithm: 一个字符串,指定最近邻的算法,可以为下: 
   ball_tree: 使用BallTree算法。
   kd_tree: 使用KDTree算法。
   brute: 使用暴力搜索算法。
   auto: 自动决定最合适算法。
4.leaf_size: 一个整数,指定BallTree或者KDTree叶节点的规模。它影响树的构建和查询速度。
5.metric: 一个字符串,指定距离度量。默认为‘minkowski’(闵可夫斯基)距离。
6.p: 整数值。 
   p=1: 对应曼哈顿距离。
   p=2: 对应欧氏距离。
7.n_jobs: 并行性。默认为-1表示派发任务到所有计算机的CPU上。

方法: 
1.fit(X,y): 训练模型。
2.predict(X): 预测模型。
3.score(X,y): 返回在(X,y)上预测的准确率(accuracy)。
4.predict_proba(X): 返回样本为每种标记的概率。
5.kneighbors([X,n_neighbors,return_distace]): 返回样本点的k邻近点。
  如果return_distance=True,同时还返回到这些近邻点的距离。
6.kneighbors_graph([X,n_neighbors,mode]): 返回样本点的连接图。
'''

决策树(回归树)

from sklearn.tree import DecisionTreeRegressor

DecisionTreeRegressor(criterion='mse', splitter='best', max_depth=None, min_samples_split=2, 
					  min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, 		
					  random_state=None, max_leaf_nodes=None, min_impurity_split=1e-07, presort=False)

'''
参数: 
1.criterion : 一个字符串,指定切分质量的评价标准。默认为‘mse’,且只支持该字符串,表示均方误差。
2.splitter : 一个字符串,指定切分原则,可以为: 
   best : 表示选择最优的切分。
   random : 表示随机切分。
3.max_features : 可以为整数、浮点、字符或者None,指定寻找best split时考虑的特征数量。 
   如果是整数,则每次切分只考虑max_features个特征。
   如果是浮点数,则每次切分只考虑max_features*n_features个特征(max_features指定了百分比)。
   如果是字符串‘auto’,则max_features等于n_features。
   如果是字符串‘sqrt’,则max_features等于sqrt(n_features)。
   如果是字符串‘log2’,则max_features等于log2(n_features)。
   如果是字符串None,则max_features等于n_features。
4.max_depth : 可以为整数或者None,指定树的最大深度。 
  如果为None,表示树的深度不限(知道每个叶子都是纯的,即叶子结点中的所有样本点都属于一个类,
  或者叶子中包含小于min_sanples_split个样本点)。
如果max_leaf_nodes参数非None,则忽略此项。
5.min_samples_split : 为整数,指定每个内部节点(非叶子节点)包含的最少的样本数。
6.min_samples_leaf : 为整数,指定每个叶子结点包含的最少的样本数。
7.min_weight_fraction_leaf : 为浮点数,叶子节点中样本的最小权重系数。
8.max_leaf_nodes : 为整数或None,指定叶子结点的最大数量。 
   如果为None,此时叶子节点数不限。
   如果非None,则max_depth被忽略。
9.class_weight : 一个字典、字典的列表、字符串‘balanced’或者None,它指定了分类的权重。
  权重形式为:{class_label:weight} 如果为None,则每个分类权重都为1.
  字符串‘balanced’表示每个分类的权重是各分类在样本出现的频率的反比。
10.random_state : 一个整数或者一个RandomState实例,或者None。 
   如果为整数,则它指定了随机数生成器的种子。
   如果为RandomState实例,则指定了随机数生成器。
   如果为None,则使用默认的随机数生成器。
11.presort : 一个布尔值,指定了是否要提前排序数据从而加速寻找最优切分的过程。
  设置为True时,对于大数据集会减慢总体训练过程,但对于小数据集或者设定了最大深度的情况下,则会加速训练过程。

属性: 
1.feature_importances_ : 给出了特征的重要程度。该值越高,则特征越重要(也称为Gini importance)。
2.max_features_ : max_feature的推断值。
3.n_features_ : 当执行fit后,特征的数量。
4.n_outputs_ : 当执行fit后,输出的数量。
5.tree_ : 一个Tree对象,即底层的决策树。

方法: 
1.fit(X,y) : 训练模型。
2.predict(X) : 用模型预测,返回预测值。
3.score(X,y) : 返回性能得分
'''

随机森林(回归森林)

from sklearn.ensemble import RandomForestRegressor

RandomForestRegressor(n_estimators='warn', criterion='mse', max_depth=None, min_samples_split=2,
					  min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', 
					  max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, 
					  bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, 
					  warm_start=False)

'''
参数:
1.n_estimators :一个整数,指定基础决策树的数量(默认为10).
2.criterion:字符串。指定分裂的标准,默认为sse
3.max_depth:一个整数或者None,指定每一个基础决策树模型的最大深度。如果      
  max_leaf_nodes不是None,则忽略此参数。
4.min_samples_split:一个整数,指定了每个基础决策树模型分裂所需最小样本数。
5.min_samples_leaf:一个整数,指定了每个基础决策树模型叶节点所包含的最小样本数。
6.min_weight_fraction_leaf:一个浮点数。叶节点的最小加权权重。当不提供
  sample_weight时,样本的权重是相等的。
7.max_features:一个整数,浮点数或者None。代表节点分裂是参与判断的最大特征数。
8.max_leaf_nodes:为整数或者None,指定了每个基础决策树模型的最大叶节点数量。
9.bootstrap:为布尔值。如果为True,则使用采样法bootstrap sampling来产生决策树的训练数据。
10.oob_score:为布尔值。如果为True,则使用包外样本来计算泛化误差。
11.n_jobs:一个整数,指定并行性。如果为-1,则表示将训练和预测任务派发到所有CPU上。
12.verbose:一个整数,如果为0则不输出日志,如果为1,则每隔一段时间输出日志,大于1输出日志会更频繁。
13.warm_start:布尔值。当为True是,则继续使用上一次训练结果。否则重新开始训练。
14.random_state:一个整数或者一个RandomState实例,或者None。 
  如果为整数,指定随机数生成器的种子。
  如果为RandomState,指定随机数生成器。
  如果为None,指定使用默认的随机数生成器。

属性 
1.estimators_:一个数组,存放所有训练过的决策树。
2.oob_prediction_:一个数组,训练数据使用包外估计时的预测值。
3.n_features_:一个整数,在训练时使用的特征数量。
4.n_outputs_:一个整数,在训练时输出的数量。
5.feature_importances_:一个数组,形状为[n_features]。如果base_estimator支持,
  则他给出每个特征的重要性。
6.oob_score_:一个浮点数,训练数据使用包外估计时的得分。

方法 
1.fit(X,y):训练模型。 
2.predict(X):用模型进行预测,返回预测值。
3.score(X,y):返回在(X,y)上预测的准确度。
'''

GBDT回归

from sklearn.ensemble import GradientBoostingRegressor

GradientBoostingRegressor(loss='ls', learning_rate=0.1, n_estimators=100, subsample=1.0, 
						  criterion='friedman_mse', min_samples_split=2, min_samples_leaf=1, 
						  min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_decrease=0.0, 
						  min_impurity_split=None, init=None, random_state=None, max_features=None, 
						  alpha=0.9, verbose=0, max_leaf_nodes=None, warm_start=False, presort='auto', 
						  validation_fraction=0.1, n_iter_no_change=None, tol=0.0001)

'''
1.loss: 损失函数,‘ls’:此时损失函数为平方损失函数。 
- ‘lad’:此时使用指数绝对值损失函数。 
- ‘quantile’:分位数回归(分位数指的是百分之几),采用绝对值损失。 
- ‘huber’:此时损失函数为上述两者的综合,即误差较小时,采用平方损失,在误差较大时,采用绝对值损失。
2.learning_rate:学习率
3.n_ estimators: 基学习器的个数,这里是树的颗数
4.subsample: 取值在(0, 1)之间,取原始训练集中的一个子集用于训练基础决策树
5.criterion: 'friedman_mse'改进型的均方误差;'mse'标准的均方误差; 'mae'平均绝对误差。
6.min_samples_split:一个整数,指定了每个基础决策树模型分裂所需最小样本数。
7.min_samples_leaf:一个整数,指定了每个基础决策树模型叶节点所包含的最小样本数。
8.min_weight_fraction_leaf:一个浮点数。叶节点的最小加权权重。当不提供sample_weight时,样本的权重是相等的。
9.max_depth:一个整数或者None,指定每一个基础决策树模型的最大深度。如果max_leaf_noeds不是None,则忽略此参数。
10.max_features:一个整数,浮点数或者None。代表节点分裂是参与判断的最大特征数。整数为个数,浮点数为所占比重。
11.max_leaf_nodes:为整数或者None,指定了每个基础决策树模型的最大叶节点数量。
12.min_impurity_split:一个浮点数,指定在树生长的过程中,节点分裂的阈值,默认为1e-7。
13.init:一个基础分类器对象或者None
14.alpha:一个浮点数,只有当loss=‘huber’或者loss=‘quantile’时才有效。
15.verbose:如果为0则不输出日志,如果为1,则每隔一段时间输出日志
16.warm_start:热启动,当你训练GBM到一定程度停止时,如果你想在这个基础上接着训练,就需要用到该参数减少重复训练;

属性 
1.feature_importance_:一个数组,给出了每个特征的重要性(值越高重要性越大)。
2.oob_improvement_:一个数组,给出了每增加一棵基础决策树,在包外估计(即测试集)的损失函数的减少值。
3.train_score_:一个数组,给出每增加一棵基础决策树,在训练集上的损失函数的值。
4.loss:具体损失函数对象。
5.init:初始预测使用的分类器。
6.estimators_:一个数组,给出了每个基础决策树。

方法 
1.apply(X)	Apply trees in the ensemble to X, return leaf indices.
2.fit(X,y):训练模型。
3.get_params([deep])	Get parameters for this estimator.
4.predict(X):用模型进行预测,返回预测值。
5.score(X,y):返回在(X,y)上预测的准确率。
6.set_params(**params)	Set the parameters of this estimator.
7.staged_predict(X):返回一个数组,数组元素依次是每一轮迭代结束时尚未完成的集成分类器的预测值。
'''

XGBoost 回归

from xgboost import XGBRegressor

XGBRegressor(max_depth=3, learning_rate=0.1, n_estimators=100, silent=True, objective='reg:linear', 	
			 booster='gbtree', n_jobs=1, nthread=None, gamma=0, min_child_weight=1, max_delta_step=0, 
			 subsample=1, colsample_bytree=1, colsample_bylevel=1, reg_alpha=0, reg_lambda=1, 
			 scale_pos_weight=1, base_score=0.5, random_state=0, seed=None, missing=None, **kwargs)

'''
属性
1.feature_importances_  给出每个特征的重要性。

用法
1.apply(X[, ntree_limit])	Return the predicted leaf every tree for     
  each sample.
2.evals_result()	Return the evaluation results.
3.fit(X[, y])	Fit a gradient boosting classifier
4.get_booster()	Get the underlying xgboost Booster of this model.
5.get_params([deep])	Get parameters.
6.get_xgb_params()	Get xgboost type parameters.
7.predict(X)	Predict with data.
8.score(X, y[, sample_weight])	Returns the mean accuracy on the given 
  test data and labels.
9.set_params(**params)	Set the parameters of this estimator.
'''

猜你喜欢

转载自blog.csdn.net/qq_43944517/article/details/120115217