我的csv
文件中的数据看起来有点像这样:
column1 column2
b 2
c 4
z 1
g 3
...
(这不是真实数据)Column1
是分类的,column2
是连续的,我想对这些数据进行线性回归。我的代码目前看起来像这样:
# Function to get data from the csv file.
def import_data(file_name):
df = pd.read_csv(file_name).drop_duplicates()
X_parameter = []
Y_parameter = []
for alpha, beta in zip(df['column1'], df['column2']):
X_parameter.append([float(alpha)])
Y_parameter.append(float(beta))
return X_parameter, Y_parameter
X, Y = import_data(filename)
def linear_model_main(X_parameters, Y_parameters, predict_value):
# Create linear regression object
regress = linear_model.LinearRegression()
regress.fit(X_parameters, Y_parameters)
prediction_outcome = regress.predict(predict_value)
predictions = {}
predictions['intercept'] = regress.intercept_
predictions['coefficient'] = regress.coef_
predictions['predicted_value'] = prediction_outcome
return predictions
我不确定如何在此代码中指定column1
是绝对的?我尝试将其更改为数值数据(a = 1, b = 2, ...
),但Python将其视为连续的。
答案 0 :(得分:3)
您可以使用get_dummies
将它们作为虚拟变量返回
>>> pd.concat([df, pd.get_dummies(df.column1)], axis=1)
column1 column2 b c g z
0 b 2 1 0 0 0
1 c 4 0 1 0 0
2 z 1 0 0 0 1
3 g 3 0 0 1 0
编辑:
del df['column1']
df = df[['b', 'c', 'g', 'z', 'column2']]
>>> df
b c g z column2
0 1 0 0 0 2
1 0 1 0 0 4
2 0 0 0 1 1
3 0 0 1 0 3
regress.fit(df.iloc[:, :-1].values, df.iloc[:, -1].values)