以上截图参考为:sample.xlsx。我一直无法使用 LinearRegression() 函数获取每只股票的 beta。 输入:
以上截图参考为:sample.xlsx。我一直无法使用 LinearRegression() 函数获取每只股票的 beta。
输入:
import numpy as np import pandas as pd from sklearn.linear_model import LinearRegression df = pd.read_excel('sample.xlsx') mean = df['ChangePercent'].mean() for index, row in df.iterrows(): symbol = row['stock'] perc = row['ChangePercent'] x = np.array(perc).reshape((-1, 1)) y = np.array(mean) model = LinearRegression().fit(x, y) print(model.coef_)
输出: 第 16 行:model = LinearRegression().fit(x, y) “单例数组 %r 不能被视为有效集合。” % X TypeError:单例数组数组(3.34)不能被视为有效集合。 如何使集合有效,以便我可以获得每只股票的 beta 值(model.coef_)?
输出:
第 16 行:model = LinearRegression().fit(x, y) “单例数组 %r 不能被视为有效集合。” % X
TypeError:单例数组数组(3.34)不能被视为有效集合。
如何使集合有效,以便我可以获得每只股票的 beta 值(model.coef_)?
X 和 y 必须具有相同的形状,因此您需要将 x 和 y 都重塑为 1 行和 1 列。在这种情况下,它恢复为以下内容:
np.array(mean).reshape(-1,1)`或者`np.array(mean).reshape(1,1)
假设您正在训练 5 个分类器,每个分类器只有一个值,这 5 个模型将“学习”线性回归的系数为 0 且截距为 3.37 ( ) 也就不足为奇了y。
y
import numpy as np import pandas as pd from sklearn.linear_model import LinearRegression df = pd.DataFrame({ "stock": ["ABCD", "XYZ", "JK", "OPQ", "GHI"], "ChangePercent": [-1.7, 30, 3.7, -15.3, 0] }) mean = df['ChangePercent'].mean() for index, row in df.iterrows(): symbol = row['stock'] perc = row['ChangePercent'] x = np.array(perc).reshape(-1,1) y = np.array(mean).reshape(-1,1) model = LinearRegression().fit(x, y) print(f"{model.intercept_} + {model.coef_}*{x} = {y}")
从算法的角度来看这是正确的,但考虑到您只提供一个示例来训练每个模型,这没有任何实际意义。