def sample_105_0(): """ 10.5 AbuML :return: """ global g_with_date_week_noise g_with_date_week_noise = True train_x, train_y_regress, train_y_classification, pig_three_feature, \ test_x, test_y_regress, test_y_classification, kl_another_word_feature_test = sample_1031_1() from abupy import AbuML # 通过x, y矩阵和特征的DataFrame对象组成AbuML ml = AbuML(train_x, train_y_classification, pig_three_feature) # 使用随机森林作为分类器 _ = ml.estimator.random_forest_classifier() # 交织验证结果的正确率 print('ml.cross_val_accuracy_score():\n', ml.cross_val_accuracy_score()) # 特征的选择 print('ml.feature_selection():\n', ml.feature_selection())
train_df = df.filter( regex= 'Survived|Age_.*|SibSp|Parch|Fare_.*|Cabin_.*|Embarked_.*|Sex_.*|Pclass_.*|Child|Age\*Class_.*' ) train_df.head(1) train_np = train_df.as_matrix() y = train_np[:, 0] x = train_np[:, 1:] titanic = AbuML(x, y, train_df) titanic.estimator.logistic_classifier() titanic.cross_val_accuracy_score() titanic.importances_coef_pd() titanic.feature_selection() #L2 def loss_func(X, W, b, y): C = 2 s = score(X, W, b) p = softmax(s) return -np.mean(cross_entropy(y, p)) + np.mean(np.dot(w.T, w) / C) from abupy import AbuML titanic = AbuML.create_test_more_fiter() titanic.estimator.logistic_classifier() titanic.plot_learning_curve()
index=fairy_tale_feature.columns[1:])) feature_selection(estimator, train_x, train_y_classification) # 3.3 from abupy import AbuML # 通过X ,Y矩阵和特征的DataFrame对象醉成AbuML ml = AbuML(train_x, train_y_classification, fairy_tale_feature) # 使用随机森林作为分类器 _ = ml.estimator.random_forest_classifier() # 交织验证结果的正确率 ml.cross_val_accuracy_score() # 特征的选择 ml.feature_selection() abupy.env.g_enable_ml_feature = True abupy.env.g_enable_train_test_split = True # 初始化资金200万元 read_cash = 2000000 # 每笔交易的买入基数资金设置为万分之15 abupy.beta.atr.g_atr_pos_base = 0.0015 # 使用run_loop_back运行策略进行全市场回测: from abupy import AbuFactorBuyBreak from abupy import AbuFactorAtrNStop from abupy import AbuFactorPreAtrNStop from abupy import AbuFactorCloseAtrNStop from abupy import abu
train_df.head(1) #新增的特征是否能够提升模型表现 train_np = train_df.as_matrix() y = train_np[:, 0] x = train_np[:, 1:] titanic = AbuML(x, y, train_df) titanic.estimator.logistic_classifier() titanic.cross_val_accuracy_score() #一般来说,机器学习中看一个新特征是否发挥作用,最常用的方法就是加进去看模型成绩是否提升,可以同时观察模型给特征分配的权重,看特征发挥作用的大小。 print titanic.importances_coef_pd() #对一些特定的应用场景中,模型的训练非常耗时,可能几天甚至更长,这些应用场景中,需要一些新的数学方法估计新特征是否有效。机器学习中有很多方法评估特征在模型中发挥的作用 #如: print titanic.feature_selection() #通过人工构造的非线性特征,可以弥补线性模型表达能力的不足,这一手段之所以能生效,背后的原因是:低维的非线性关系可以在高维空间线性展开。 #增加新的特征维度,让分类任务背后的数学表达式变得更加简单,让分类模型更容易挖掘出信息,这是构造新特征有意义的地方,增加特征维度,构造出模型表达不出的内在表达式。 #对于逻辑分类模型而言,这就是通过增加新的非线性特征,完成特征维度的扩展,构造出模型表达不出的非线性的内在关系。 import numpy as np def score(x, w, b): return np.dot(x, w) + b def softmax(s): return np.exp(s) / np.sum(np.exp(s), axis=0)