选择特征种类
样本中特征种类很多,不可能把每个特征都拿来训练,所以需要计算出最佳的特征种类
我选择的是决策数算法,来选择特征种类
#导入这两个包
from sklearn import cross_validation
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
#数组中输入所有的特征种类
features=[.....]
#给测试集以及标签集赋值
X=...
y=...
#采用交叉验证方法将测试集分为和训练集
#test_size 测试集比例,random_state 随机取值的程度
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size,random_state)
#开始运行决策树算法
#n_estimators 决策树中树的数量
#n_jobs (默认=1) 适合和预测并行运行的作业数,如果为-1,则将作业数设置为核心数
forest = RandomForestClassifier(n_estimators, random_state, n_jobs)
forest.fit(X_train,y_train)
#显示结果
#得到其每个特征的重要性数据
importances = forest.feature_importances_
#根据这个数据就可以选出能够对结果影响最大的特征了
特征值进行降维和归一化
每个特征具体的值衡量标准以及显示的格式各有不同
为了能够进行分析训练,需要把值进行归一化,使得特征之间可以相互衡量
当特征数太多时,会导致计算量增多,为了减少计算量,就要进行降维操作
#引入所需的包
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
#进行归一化
standard=StandardScaler()
stan.fit(X_train)
x_t=stan.transform(X_train)x_test=stan.transform(X[1000:1200])
#降维
#n_components 维数
pca = PCA(n_components=para.pca_compo[2], whiten=True, random_state=10)
pca.fit(X_train)
X _train= pca.transform(X_train)
选取合适的训练参数
参数会直接影响到训练最后的成果,所以参数的选择十分重要
我使用的是GridSearchCV来选择最佳的参数
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import GridSearchCV
# 准备工作
svc = svm.SVC(kernel=para.svm_kernel[2], class_weight='balanced')
model = make_pipeline(pca, svc)
# 使用gridSearchcv(网格搜索+交叉验证)选择最佳的c,gamma,参数名称一定要写正确
param_grid = {'svc__C': para.svm_c, 'svc__gamma': para.svm_gamma}
grid = GridSearchCV(model, param_grid)
# 拿前一个batch的数据做分析
grid.fit(train_X[0:train_batch], train_y[0:train_batch])
print(grid.best_params_)
model = grid.best_estimator_