使用sklearn进行包含分类特征的多元线性回归 – python

我有一个数据集,每个文档都有一个对应的分数/评级

dataset = [   {"text":"我不喜欢这个小设备", "rating":"2"},   {"text":"我真的很喜欢这个大设备", "rating":"5"},   ....]

此外,我还从同一数据集的text变量中提取了一个类别(变量)的术语列表

x1 = [short, slim, small, shrink]x2 = [big,huge,large]

那么,我如何使用上述单词列表(或者表示对应术语列表中任何词汇存在性的变量,因为列表中的每个术语都是唯一的)作为多个独立变量,以及评级作为因变量来进行线性回归呢?换句话说

我如何用sklearn评估术语列表对评级的影响

我使用TfidfVectorizer来导出文档-术语矩阵。如果可能的话,请提供一个简单的代码片段或示例。


回答:

根据评论中的讨论,似乎应该理解为,每个列表定义了一个二进制变量,其值取决于列表中的任何词是否出现在相关文本中。所以,我们首先要更改文本,使词汇实际出现:

dataset = [   {"text": "我不喜欢这个大设备", "rating": "2"},   {"text": "我真的很喜欢这个小设备", "rating": "5"},   {"text": "一些其他文本", "rating": "3"}]

为了简化我们的工作,我们接下来将这些数据加载到数据框架中,将评级更改为整数,并创建相关变量:

df = pd.DataFrame(dataset)df['rating'] = df['rating'].astype(int)df['text'] = df['text'].str.split().apply(set)x1 = ['short', 'slim', 'small', 'shrink']x2 = ['big', 'huge', 'large']df['x1'] =  df.text.apply(lambda x: x.intersection(x1)).astype(bool)df['x2'] =  df.text.apply(lambda x: x.intersection(x2)).astype(bool)

到这里,df是以下数据框架:

   rating                                   text     x1     x20       2  {this, large, don't, like, device, I}  False   True1       5    {this, small, love, Really, device}   True  False2       3                    {other, Some, text}  False  False

有了这个,我们可以创建相关的模型,并检查系数最终是什么:

model = LinearRegression()model.fit(df[['x1', 'x2']], df.rating)print(model.coef_)  # array([ 2., -1.])print(model.intercept_)  # 3.0

正如评论中提到的,这将会产生最多四种评级,每种评级对应x1x2TrueFalse的组合。在这种情况下,碰巧所有可能的输出都是整数,但在一般情况下,它们不一定是整数,也不一定局限于感兴趣的区间。考虑到评级的顺序性质,这实际上是一个适合某种顺序回归(例如,参见mord)的案例。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注