为多项式特征建立非线性回归模型的任何有效方法?

数据挖掘 机器学习 Python
2022-02-15 22:19:25

我试图了解犯罪频率如何影响某些地区的房价。为此,我从芝加哥犯罪数据和 zillow 房地产数据开始。我想了解房价与犯罪频率之间的关系以及某些地区的前 5 名犯罪。最初,我为这个规范建立了模型,但这对我来说意义不大。谁能启发我该怎么办?任何有效的方法来训练某些地区房价与犯罪频率之间潜在关系的回归模型?有什么启发式的想法可以前进吗?

示例数据片段:

以下是合并数据,包括某些地区的年度房价和最高犯罪类型:

示例数据

这是可重现的示例数据片段

我的尝试

所以这是我尝试用上述可重现的示例数据拟合回归模型:

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
import pandas as pd

regDF = pd.read_csv('exampleDF')

X_feats = regDF.drop(['Avg_Price_2012'], axis=1)
y_label = regDF['Avg_Price_2012'].values

sc_x = StandardScaler()
sc_y = StandardScaler()
X = sc_x.fit_transform(X_feats)
#y= sc_y.fit_transform(y_label)
y = sc_y.fit_transform(y_label .reshape(-1,1)).flatten()
regModel = LinearRegression()
regModel.fit(X, y)
regModel.coef_

但对我来说,上面的模型效率不高,需要做更多的事情。我想我必须对那些多项式特征使用非线性回归模型,我不确定能不能完成。

谁能指出我如何为某些地区的犯罪类型和频率建立正确的房价预测模型?任何的想法?谢谢

目标

我想建立回归模型来根据某些地区的犯罪频率和类型来预测房价。如何对某些地区的房价与犯罪之间的关系进行建模?有什么想法吗?

1个回答

您可能会发现自己陷入了数据科学中最有趣的问题之一,这部分更像是艺术而不是科学。

我会给你一些想法,可以给你如何解决这个问题的提示:

  1. 价格、工资和其他具有“累积”信息的变量多次具有向左倾斜的分布(很多人有一点,少数人有很多),建议对其取对数。你的新变量应该是Ln(Y),这样,您将缩小 avg_price 较大的区域与 avg_price 较低的区域之间的差距。当这种情况发生时,你会发现你的Y多变的。

  2. 取对数的想法也适用于X您拥有的变量(因为犯罪也会在某些领域累积)。

  3. 运行线性回归时不需要标准缩放,因为变量的相对性在回归中没有影响:

回归Y=α0+α1X1+...+αnXn(无鳞)在数学上等价于Y=β0+β1Z1+...+βnZn(被骂)

  1. 如果您想使用其他模型,您的数据似乎适合它,也许回归树或 XGBoost 可能会很好地解决您的问题。

我敢打赌,在 avg_price 中获得对数,在一些外生变量中而不是缩放会给你带来更好的结果。

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
import pandas as pd

regDF = pd.read_csv('exampleDF')

X_feats = regDF.drop(['Avg_Price_2012'], axis=1)
y_label = regDF['Avg_Price_2012'].values

X = log(X_feats)
y = log(y_label.reshape(-1,1)).flatten()
regModel = LinearRegression()
regModel.fit(X, y)
regModel.coef_