4. 模型构建-零基础入门数据挖掘 - 二手车交易价格预测

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值