preprocessing

缺失值的处理

简单的preprocessing直接用pandas,类似

dataO['Sex'] = dataO['Sex'].apply(lambda s: 1 if s == 'male' else 0)
dataO["Age"] = dataO["Age"].fillna(dataO["Age"].median())
dataO["child"] = dataO["Age"].apply(lambda x: 1 if x < 15 else 0)
dataO["Embarked"] = dataO["Embarked"].fillna("S")
dataO = dataO.fillna(0)

Imputer

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

dataSet=Imputer.fit_transform(dataSet)#让impnum的缺失值处理模型先适应给dataSet再转化

几乎所有的模型运用在dataSet上都是这样

数据归一化

StandardScaler()

数据标准化

scaler=StandardScaler()
dataSet=scaler.fit_transform(dataSet)

MinMaxScaler()

min_max处理

scaler=MinMaxScaler()
dataSet=scaler.fit_transform(dataSet)

正则化

数据划分

model_selection.train_test_split

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

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的误差估计函数。
  • 回归情况:

‘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_数组的索引)。