我有 x1=职位级别(数字)、x2=职位代码(分类)和 y = 库存值(数字)。对于 3x500 的数据集,我的股票值(value)中有 250 个 NaN 值。
我需要在下面的代码中更改什么才能将 x2 读取为分类值并重新运行程序以查找系数? Data set example
> import pandas as pd from sklearn.linear_model import LinearRegression
> df = pd.read_excel("stats.xlsx")
> df_nonull=df.dropna() X_train = df_nonull[['Job Code','Job Level']]
> y_train = df_nonull[['Stock Value']]
>
>
> X_test = df[['Job Code','Job Level']] y_test = df[['Stock Value']]
>
> regressor = LinearRegression() model=regressor.fit(X_train, y_train)
> # display coefficients print(regressor.coef_)
> print(regressor.coef_)
最佳答案
这是一个简单的模型训练问题。您可用的训练数据(观察)是存在股票值(value)的行;您以后的“真实”数据是没有的行。
在这种情况下,分类数据是相当合法的。事实上,您也可以尝试将工作级别声明为绝对级别,因为它是离散的;这将使您摆脱任何线性假设(尽管它也否认了级别代码排序的任何适用性)。
您的任务是选择能够正确服务您的数据的模型类型。这需要研究和实验;欢迎来到数据科学。由于您还没有讨论您的数据形状、密度、连接性、集群等,因此我们可以与您探讨的内容确实不多。对三个功能的六次观察(请注意,职位代码和职位名称并非 100% 耦合)不足以进行有根据的推测。
尝试在“线性”回归中添加一些多项式项:可能是每个输入的平方项和平方根。这通常是此类任务的第一次尝试。
关于python - 用回归填充 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44163592/