在线性回归中将数据视为分类

时间:2015-08-13 17:00:12

标签: python pandas linear-regression categorical-data

我的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将其视为连续的。

1 个答案:

答案 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)