preprocessing
缺失值的处理
简单的preprocessing直接用pandas,类似
1 | dataO['Sex'] = dataO['Sex'].apply(lambda s: 1 if s == 'male' else 0) |
Imputer
1 | impnum=Imputer(missing_values=nan,strategy='mean',axis=0,copy=False) |
建立一个处理缺失值的模型
- impnum,missing_values定义什么是缺失值
- strategy定义用什么方式处理缺失值”mean”,”median”,”most_frequent”
- axis行或列
- copy是在原数据上进行操作还是copy一份
fit_transform(x)
这个函数就是先fit,再transform
1 | dataSet=Imputer.fit_transform(dataSet)#让impnum的缺失值处理模型先适应给dataSet再转化 |
几乎所有的模型运用在dataSet上都是这样
数据归一化
StandardScaler()
数据标准化
1 | scaler=StandardScaler() |
MinMaxScaler()
min_max处理
1 | scaler=MinMaxScaler() |
正则化
数据划分
model_selection.train_test_split
1 | x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=test_p, random_state=0) |
- test_size是test的比例,random_state是随机种子
调参
sklearn.model_selection.GridSearchCV
Parameters
1 | GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', error_score='raise', return_train_score=True) |
estimator:所使用的分类器,或者pipeline
param_grid:值为字典或者列表,即需要最优化的参数的取值
tuned_params = { 'learning_rate': [0.028, 0.011],#np.arange(0.001, 0.03, 0.001) 'max_depth': range(5, 10, 1)}
scoring:准确度评价标准,默认None,这时需要使用score函数;或者如scoring=’roc_auc’,根据所选模型不同,评价准则不同。字符串(函数名),或是可调用对象,需要其函数签名形如:scorer(estimator, X, y);如果是None,则使用estimator的误差估计函数。
‘accuracy’ metrics.accuracy_score
‘average_precision’ metrics.average_precision_score
‘f1’ metrics.f1_score
‘f1_micro’ metrics.f1_score
‘f1_macro’ metrics.f1_score
‘f1_weighted’ metrics.f1_score
‘f1_samples’ metrics.f1_score
‘neg_log_loss’ metrics.log_loss
‘precision’ etc. metrics.precision_score
‘recall’ etc. metrics.recall_score
‘roc_auc’ metrics.roc_auc_score
回归情况:
‘neg_mean_absolute_error’ metrics.mean_absolute_error
‘neg_mean_squared_error’ metrics.mean_squared_error
‘neg_median_absolute_error’ metrics.median_absolute_error
‘r2’ metrics.r2_score
n_jobs:并行数,int:个数,-1:跟CPU核数一致, 1:默认值。
pre_dispatch:指定总共分发的并行任务数。当n_jobs大于1时,数据将在每个运行点进行复制,这可能导致OOM,而设置pre_dispatch参数,则可以预先划分总共的job数量,使数据最多被复制pre_dispatch次
iid:默认True,为True时,默认为各个样本fold概率分布一致,误差估计为所有样本之和,而非各个fold的平均。
cv:交叉验证参数,默认None,使用三折交叉验证。指定fold数量,默认为3,也可以是yield训练/测试数据的生成器。
refit:默认为True,程序将会以交叉验证训练集得到的最佳参数,重新对所有可用的训练集与开发集进行,作为最终用于性能评估的最佳模型参数。即在搜索参数结束后,用最佳参数结果再次fit一遍全部数据集。
verbose:日志冗长度,int:冗长度,0:不输出训练过程,1:偶尔输出,>1:对每个子模型都输出。
Attributes:
best_estimator_:效果最好的分类器
best_score_:成员提供优化过程期间观察到的最好的评分
best_params_:描述了已取得最佳结果的参数的组合
best_index_:对应于最佳候选参数设置的索引(cv_results_数组的索引)。