什么是X_train和y_train?

时间:2018-06-03 00:55:16

标签: python machine-learning logistic-regression

我想开始使用Machine Learning开发应用程序。我想对文本进行分类 - 垃圾邮件或非垃圾邮件。我有2个文件 - ag -l string1 | xargs ag -l string2 | xargs ag -l string3 | xargs ag -l string4 spam.txt - 每个文件包含数千个句子。如果我想使用分类器,请说ham.txt

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

LogisticRegression

所以这是我的问题,实际上`lr = LogisticRegression() model = lr.fit(X_train, y_train)` X_train是什么?我如何从句子中获取它们?我在互联网上搜索,我不明白,这是我的最后一次电话,我对这个话题很新。谢谢!

1 个答案:

答案 0 :(得分:4)

根据文件(见here):

  • X对应于形状(n_samples, n_features)的浮动特征矩阵(又名训练集的设计矩阵
  • y是形状(n_samples,)的浮动目标矢量(标签矢量)。在您的情况下,标签0可能对应于垃圾邮件示例,1对应于火腿
  

现在的问题是如何从文本数据中获取浮点特征矩阵。

一个常见的方案是使用 tf-idf矢量化(此here上的更多信息),sklearn中提供了该信息。

矢量化可以通过sklearn 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] API进行逻辑回归链接。

这就是代码看起来粗略的方式

{{1}}