python中线性回归中字符串的预测

2024-05-20 16:05:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似于三列类型/名称/价格的数据集,希望根据类型和名称预测价格。 这里的Type/Name是分类字符串值。价格是数值目标变量。在

我的数据集看起来像:

Type Name Price
A    ec1  1.5
B    ec2  2
A    ec2  3
C    ec1  1
B    ec3  1

我必须为这个数据集创建一个模型,并希望预测类型/名称。 A型和ec2的预计价格是多少? 你能提供样本代码吗。在

而且,数据集不会有固定的列数。只有目标变量被固定为价格。..独立的日期/字段可能有。在


Tags: 数据字符串name模型名称类型目标type
2条回答

对输入数据使用字典向量器。它将把你的分类特征转换成向量的二元特征。在

请在此处阅读更多信息:http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.DictVectorizer.html#sklearn.feature_extraction.DictVectorizer

如果我以你的数据集为例,它看起来像这样:

data = [{"type": A, "name": ec1},
        {"type": B, "name": ec2},
        {"type": A, "name": ec2},
        {"type": C, "name": ec1},
        {"type": B, "name": ec3}]

from sklearn.feature_extraction import DictVectorizer

vectorizer = DictVectorizer()
vector_data = vectorizer.fit_transform(data)

现在您的vector_data已经准备好用于机器学习模型。在

我将字符串值转换为数值以适合线性模型

from sklearn.linear_model import LinearRegression
from sklearn.feature_extraction import DictVectorizer
import StringIO
data ='''Type,Name,Price
A,ec1,1.5
B,ec2,2
A,ec2,3
C,ec1,1
B,ec3,1'''
df = pd.read_csv(StringIO.StringIO(data))
mapping = {}
cols = df.drop('Price', axis=1).columns
for col in cols:
  mapping[col] = {name: i for i, name in enumerate(df[col].unique())}
def mapping_func(row):
  return pd.Series([mapping[col][row[col]] for col in cols])

X = df.apply(mapping_func, axis=1)
y = df['Price']
model = LinearRegression()

model.fit(X, y)
print model.predict([ mapping['Type']['B'], mapping['Name']['ec2']] )

输出:

^{pr2}$

相关问题 更多 >