什么是X和y列车?

2024-05-17 06:31:36 发布

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

我想开始用机器学习开发一个应用程序。我想分类文本-垃圾邮件或不是垃圾邮件。我有两个文件-spam.txtham.txt-每个文件包含一千个句子。如果我想使用分类器,让我们说LogisticRegression

例如,正如我在互联网上看到的,为了符合我的模型,我需要这样做:

`lr = LogisticRegression()
model = lr.fit(X_train, y_train)`

所以我的问题来了,什么是真正的X_trainy_train?我怎样才能从我的句子中得到它们?我在网上搜索,我不明白,这是我最后一次打电话,我对这个话题很陌生。谢谢您!


Tags: 文件文本txt机器应用程序分类器分类垃圾邮件
1条回答
网友
1楼 · 发布于 2024-05-17 06:31:36

根据文件(见here):

  • X对应于形状的浮点特征矩阵(n_samples, n_features)(又名。训练集的设计矩阵
  • y是形状(n_samples,)的浮动目标向量(标签向量)。在您的例子中,标签0可以对应于垃圾邮件示例,而1则对应于ham示例

The question is now about how to get a float feature matrix from text data.

一个常见的方案是使用tf idf矢量化(关于这个here的更多信息),它在^{}中可用。

向量化可以通过sklearn^{}API与logistic回归链接。

代码大致如下

from itertools import chain

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LogisticRegression

import numpy as np

# prepare string data
with open('spam.txt', 'r') as f:
   spam = f.readlines()

with open('ham.txt', 'r') as f:
   ham = f.readlines()

text_train = list(chain(spam, ham))

# prepare labels
labels_train = np.concatenate((np.zeros(len(spam)),np.ones(len(ham))))

# build pipeline
vectorizer = TfidfVectorizer()
regressor = LogisticRegression()

pipeline = Pipeline([('vectorizer', vectorizer), ('regressor', regressor)])

# fit pipeline
pipeline.fit(text_train, labels_train)

# test predict
test = ["Is this spam or ham?"]
pipeline.predict(test) # value in [0,1] 

相关问题 更多 >