Pandas 和线性回归:单个 x 的多个 y 值
Pandas and linear regression: multiple y values for single x
我有一个包含一段时间内每晚租金单价的 csv。如果该单元是租用的,则价格列在当天下方。如果未租用,则价格显示为 N/A。数据结构如下:
bedrooms day1 day2 day3... day(n)
2 75 N/A 70 50
2 60 60 60 60
4 100 110 N/A N/A
3 75 80 80 N/A
...等等。
我正在将此 csv 读入 pandas。我希望能够使用 scikit-learn 中的 LinearRegression 来预测给定卧室数量的价格。你这样做:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
# X is numpy array or sparse matrix of shape [n_samples,n_features]
# y is numpy array of shape [n_samples, n_targets]
model.fit(X, y)
如何使用 pandas 以正确的格式获取我的数据?
编辑澄清:
正确的格式应该是每个价格都与一间卧室相关联,如下所示:
bedrooms price
2 75
2 70
2 50
2 60
2 60
2 60
2 60
4 100
4 110
3 80
3 80
您可以向 bedrooms
列添加索引并堆叠数据帧。
开车确保一切都有名字,整个事情是这样的:
from StringIO import StringIO
import pandas
datafile = StringIO("""\
bedrooms day1 day2 day3 day(n)
2 75 N/A 70 50
2 60 60 60 60
4 100 110 N/A N/A
3 75 80 80 N/A
""")
df = pandas.read_table(datafile, sep='\s+', index_col='bedrooms')
df.columns.names = ['days rented']
prices = df.stack()
prices.name = 'dollars'
prices.reset_index()
打印出:
bedrooms days rented dollars
0 2 day1 75
1 2 day3 70
2 2 day(n) 50
3 2 day1 60
4 2 day2 60
5 2 day3 60
6 2 day(n) 60
7 4 day1 100
8 4 day2 110
9 3 day1 75
10 3 day2 80
11 3 day3 80
我有一个包含一段时间内每晚租金单价的 csv。如果该单元是租用的,则价格列在当天下方。如果未租用,则价格显示为 N/A。数据结构如下:
bedrooms day1 day2 day3... day(n)
2 75 N/A 70 50
2 60 60 60 60
4 100 110 N/A N/A
3 75 80 80 N/A
...等等。
我正在将此 csv 读入 pandas。我希望能够使用 scikit-learn 中的 LinearRegression 来预测给定卧室数量的价格。你这样做:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
# X is numpy array or sparse matrix of shape [n_samples,n_features]
# y is numpy array of shape [n_samples, n_targets]
model.fit(X, y)
如何使用 pandas 以正确的格式获取我的数据?
编辑澄清:
正确的格式应该是每个价格都与一间卧室相关联,如下所示:
bedrooms price
2 75
2 70
2 50
2 60
2 60
2 60
2 60
4 100
4 110
3 80
3 80
您可以向 bedrooms
列添加索引并堆叠数据帧。
开车确保一切都有名字,整个事情是这样的:
from StringIO import StringIO
import pandas
datafile = StringIO("""\
bedrooms day1 day2 day3 day(n)
2 75 N/A 70 50
2 60 60 60 60
4 100 110 N/A N/A
3 75 80 80 N/A
""")
df = pandas.read_table(datafile, sep='\s+', index_col='bedrooms')
df.columns.names = ['days rented']
prices = df.stack()
prices.name = 'dollars'
prices.reset_index()
打印出:
bedrooms days rented dollars
0 2 day1 75
1 2 day3 70
2 2 day(n) 50
3 2 day1 60
4 2 day2 60
5 2 day3 60
6 2 day(n) 60
7 4 day1 100
8 4 day2 110
9 3 day1 75
10 3 day2 80
11 3 day3 80