1. 统计学习分类
1.1 监督学习:
利用一组带标签的数据, 学习从输入到输出的映射, 然后将新数据用这种映射关系可以得到映射结果, 达到分类或者回归的目的。线性回归、决策树、SVD等
1.2 非监督学习
输入数据没有被标记,也没有确定的结果。K-means聚类、层次聚类等
1.3 半监督学习
在实际情况中,获取的数据大部分都是无标签的,人们企图加入一些人为标注的样本,使得无标签的数据通过训练自动获取标签,这相当于对无监督学习是一种改进。生成模型算法等
1.4 强化学习
用于描述和解决智能体在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。Q-Learning,隐马尔可夫模型
2 常见的监督学习模型
线性模型
决策树
神经网络
支持向量机
贝叶斯分类
集成学习模型(RandomForest, GBDT, XGBoost, LightGBM)
3 常用模型code
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import LinearRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.neural_network import MLPRegressor
from xgboost.sklearn import XGBRegressor
from lightgbm.sklearn import LGBMRegressor
models = [LinearRegression(),
DecisionTreeRegressor(),
RandomForestRegressor(),
GradientBoostingRegressor(),
MLPRegressor(solver='lbfgs', max_iter=100),
XGBRegressor(n_estimators = 100, objective='reg:squarederror'),
LGBMRegressor(n_estimators = 100)]
result = dict()
for model in models:
model_name = str(model).split('(')[0]
scores = cross_val_score(model, X=train_X, y=train_y_ln, verbose=0, cv = 5, scoring=make_scorer(mean_absolute_error))
result[model_name] = scores
print(model_name + ' is finished')
4 五折交叉验证
from sklearn.model_selection import cross_val_score
from sklearn.metrics import mean_absolute_error, make_scorer
def log_transfer(func):
def wrapper(y, yhat):
result = func(np.log(y), np.nan_to_num(np.log(yhat)))
return result
return wrapper
from sklearn.model_selection import cross_val_score
from sklearn.metrics import mean_absolute_error, make_scorer
scores = cross_val_score(model, X=train_X, y=train_y, verbose=1, cv = 5, scoring=make_scorer(log_transfer(mean_absolute_error)))
4.1
numpy.nan_to_num(x):
使用0代替数组x中的nan元素,使用有限的数字代替inf元素
在sklearn当中,可以在三个地方进行模型的评估
4.2 模型评估的三种方法
1:各个模型的均有提供的score方法来进行评估。 这种方法对于每一种学习器来说都是根据学习器本身的特点定制的,不可改变,这种方法比较简单。这种方法受模型的影响,
2:用交叉验证cross_val_score,或者参数调试GridSearchCV,它们都依赖scoring参数传入一个性能度量函数。这种方法就是我们下面讨论的使用scoring进行模型的性能评估。
3:Metric方法,Metric有为各种问题提供的评估方法。这些问题包括分类、聚类、回归等。这是我们下面的使用metrics进行模型评估。
4.2.1 直接指定评分函数的名称来进行评分
评分函数的选择是很多的,如我们熟知的f1, recall ,precision等。在用scoring进行模型性能评估的时候直接指定这些就可以完成评分任务。
cross_val_score(clf, X, y, scoring=‘neg_log_loss‘)
4.2.2 使用metric函数来进行评分
sklearn.metrics里面提供了一些函数来帮助我们进行评分。其中里面以_score结尾的函数的返回值越大,模型的性能越好。而以_error或_loss结尾的函数,返回值越小,表示模型性能越好。从命名上来看,这一点不难理解。
GridSearchCV(LinearSVC(), param_grid={‘C‘:[1, 10]}, scoring=ftwo_score)
4.2.3 使用metrics的make_score方法
这个方法需要满足下面一些条件:
需要传入一个我们自定义的函数的名称
需说明greater_is_better的值是True还是False。 当值为正的时候,返回的是score的值,值越高性能越好。当为False的时候,返回的为score的负值,值越低越好。
是否是针对分类问题的。 传入needs_threshold=True来说明是针对分类问题的,默认情况为False。
其余的参数。如在f1_score中的bata,labels。
5. 模型调参
贪心算法 https://www.jianshu.com/p/ab89df9759c8
网格调参 https://blog.csdn.net/weixin_43172660/article/details/83032029
贝叶斯调参 https://blog.csdn.net/linxid/article/details/81189154