本文主要从股市数据变量的特征分布及特征重要性两个角度对数据进行分析。通过绘制图表等方法分析特征本身对分布状况或特征间相互关系。通过机器学习模型方法分析出特种重要性排序,选出对结果贡献较大对那几个特征,这对后面建模对模型效果有着不可小觑对效果。
feature_importances_
属性。
X_1 = dataset[['Open', 'High', 'Low', 'Volume', 'Increase_Decrease','Buy_Sell_on_Open', 'Buy_Sell', 'Returns']] y_1 = dataset['Adj Close'] # 创建决策树分类器对象 clf = RandomForestRegressor(random_state=0, n_jobs=-1) # 训练模型 model = clf.fit(X_1, y_1) # 计算特征重要性 importances = model.feature_importances_ # 按降序排序特性的重要性 indices = np.argsort(importances)[::-1] # 重新排列特性名称,使它们与已排序的特性重要性相匹配 names = [dataset.columns[i] for i in indices] # 创建画布 plt.figure(figsize=(10,6)) # 添加标题 plt.title("Feature Importance") # 添加柱状图 plt.bar(range(X.shape[1]), importances[indices]) # 为x轴添加特征名 plt.xticks(range(X.shape[1]), names, rotation=90)feature_importances_
属性。
X2 = dataset[['Open', 'High', 'Low','Adj Close', 'Volume', 'Buy_Sell_on_Open', 'Buy_Sell', 'Returns']] y2 = dataset['Increase_Decrease'] clf = RandomForestClassifier(random_state=0, n_jobs=-1) model = clf.fit(X2, y2) importances = model.feature_importances_ indices = np.argsort(importances)[::-1] names = [dataset.columns[i] for i in indices] plt.figure(figsize=(10,6)) plt.title("Feature Importance") plt.bar(range(X2.shape[1]), importances[indices]) plt.xticks(range(X2.shape[1]), names, rotation=90) plt.show()estimator Estimator instance 一种带有""拟合""方法的监督学评估器,它提供关于特征重要性的信息(例如"coef_"、"feature_importances_")。n_features_to_select int or float, default=None 要选择的功能的数量。如果'None',则选择一半的特性。如果为整数,则该参数为要选择的特征的绝对数量。如果浮点数在0和1之间,则表示要选择的特征的分数。step int or float, default=1 如果大于或等于1,那么'step'对应于每次迭代要删除的(整数)特征数。如果在(0.0,1.0)范围内,则'step'对应于每次迭代中要删除的特性的百分比(向下舍入)。verbose int, default=0 控制输出的冗长。importance_getter str or callable, default='auto' 如果是'auto',则通过估计器的'coef_'或'feature_importances_'属性使用特征重要性。lr = LinearRegression(normalize=True) lr.fit(X,Y) # 当且仅当剩下最后一个特性时停止搜索 rfe = RFE(lr, n_features_to_select=1, verbose =3) rfe.fit(X,Y) ranks["RFE"] = ranking(list(map(float, rfe.ranking_)), colnames, order=-1) Fitting estimator with 12 features. ... Fitting estimator with 2 features.
RFE
包,可以用于特征消除,还提供了 RFECV
,可以通过交叉验证来对的特征进行排序。
# 实例化估计器和特征选择器 svr_mod = SVR(kernel="linear") rfecv = RFECV(svr_mod, cv=5) # 训练模型 rfecv.fit(X, Y) ranks["RFECV"] = ranking(list(map(float, rfecv.ranking_)), colnames, order=-1) # Print support and ranking print(rfecv.support_) print(rfecv.ranking_) print(X.columns)原文标题:YYDS!使用 Python 全面分析股票数据特征
文章出处:【微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。
全部0条评论
快来发表一下你的评论吧 !