X_train 和 y_train 是啥?
Posted
技术标签:
【中文标题】X_train 和 y_train 是啥?【英文标题】:What are X_train and y_train?X_train 和 y_train 是什么? 【发布时间】:2018-11-12 17:12:55 【问题描述】:我想开始使用机器学习开发应用程序。我想对文本进行分类 - 垃圾邮件或非垃圾邮件。我有 2 个文件 - spam.txt
、ham.txt
- 每个文件包含数千个句子。如果我想使用分类器,比如说LogisticRegression
。
例如,正如我在互联网上看到的,为了适合我的模型,我需要这样做:
`lr = LogisticRegression()
model = lr.fit(X_train, y_train)`
所以我的问题来了,X_train
和 y_train
实际上是什么?我如何从我的句子中获得它们?我在互联网上搜索,我不明白,这是我的最后一个电话,我对这个话题很陌生。谢谢!
【问题讨论】:
X_train 是所有具有属性的实例,y_train 是每个实例的标签。因为您的问题是二元分类问题并使用逻辑回归。您的 y_train 为 0 或 1(是否为垃圾邮件)。 【参考方案1】:根据文档(见here):
X
对应于形状为 (n_samples, n_features)
的浮点特征矩阵(又名。训练集的设计矩阵)
y
是形状为 (n_samples,)
的浮点目标向量(标签向量)。在您的情况下,标签 0
可能对应于垃圾邮件示例,1
可能对应于火腿示例
现在的问题是如何从文本数据中获取浮点特征矩阵。
一个常见的方案是使用 tf-idf 矢量化(更多关于这个here),它在sklearn
中可用。
矢量化可以通过sklearn
的Pipeline
API 与逻辑回归链接。
这大概是代码的样子
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]
【讨论】:
假设我想要 2 类文本:测试和训练。我将我的数据分成 2(80-20%,70-30% 等等),我可以像text_train
一样获得 text_test
?我说的是获取X_test
和y_test
。
是的,你可以。管道将学习训练集中出现的词汇的 idf 值,以及逻辑回归中的权重和偏差。因此,X_test
可以馈送到管道的predict
方法,该方法的输出可以与y_test
进行比较。
syltruong 我还有一些问题,你认为你可以通过邮件帮助我吗?
天哪! X
和 Y
的解释隐藏得很好:-\以上是关于X_train 和 y_train 是啥?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 LSTM keras 重塑 X_train 和 y_train
我正在尝试训练我的 X_train 和 y_train 但存在数组维度问题
clf.score(X_train,Y_train) 在决策树中评估啥?