gpt4 book ai didi

python - 如何在 sklearn 中将线性回归与分类变量结合使用

转载 作者:行者123 更新时间:2023-11-30 09:55:25 25 4
gpt4 key购买 nike

我正在尝试执行一些速度比较测试 Python 与 R,并努力解决问题 - sklearn 下使用分类变量的线性回归。

代码R:

# Start the clock!
ptm <- proc.time()
ptm

test_data = read.csv("clean_hold.out.csv")

# Regression Model
model_liner = lm(test_data$HH_F ~ ., data = test_data)

# Stop the clock
new_ptm <- proc.time() - ptm

Python 代码:

import pandas as pd
import time

from sklearn.linear_model import LinearRegression
from sklearn.feature_extraction import DictVectorizer

start = time.time()

test_data = pd.read_csv("./clean_hold.out.csv")

x_train = [col for col in test_data.columns[1:] if col != 'HH_F']
y_train = ['HH_F']

model_linear = LinearRegression(normalize=False)
model_linear.fit(test_data[x_train], test_data[y_train])

但这对我不起作用

return X.astype(np.float32 if X.dtype == np.int32 else np.float64) ValueError: could not convert string to float: Bee True

我尝试了另一种方法

test_data = pd.read_csv("./clean_hold.out.csv").to_dict()
v = DictVectorizer(sparse=False)
X = v.fit_transform(test_data)

但是,我发现了另一个错误:

File "C:\Anaconda32\lib\site-packages\sklearn\feature_extraction\dict_vectorizer.py", line 258, in transform Xa[i, vocab[f]] = dtype(v) TypeError: float() argument must be a string or a number

我不明白Python应该如何解决这个问题......

数据示例: http://screencast.com/t/hYyyu7nU9hQm

最佳答案

在使用fit之前我必须进行一些编码。

可以使用几个类:

LabelEncoder : turn your string into incremental value
OneHotEncoder : use One-of-K algorithm to transform your String into integer

我想要一个可扩展的解决方案,但没有得到任何答案。我选择了 OneHotEncoder 对所有字符串进行二值化。它非常有效,但如果有很多不同的字符串,矩阵将增长得非常快并且需要内存。

关于python - 如何在 sklearn 中将线性回归与分类变量结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32950174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com