标签:logistic-regression python machine-learning
我想开始使用机器学习开发应用程序.我想对文本进行分类 – 垃圾邮件或非垃圾邮件.我有2个文件 – spam.txt,ham.txt – 每个文件包含数千个句子.如果我想使用分类器,那么让我们说LogisticRegression.
例如,正如我在互联网上看到的那样,为了适应我的模型,我需要这样做:
`lr = LogisticRegression()
model = lr.fit(X_train, y_train)`
所以这是我的问题,实际上是什么X_train和y_train?我如何从句子中获取它们?我在互联网上搜索,我不明白,这是我的最后一次电话,我对这个话题很新.谢谢!
解决方法:
根据文档(见here):
> X对应于您的浮动特征形状矩阵(n_samples,n_features)(也就是您的训练集的设计矩阵)
> y是形状的浮点目标矢量(n_samples,)(标签矢量).在您的情况下,标签0可能对应于垃圾邮件示例,1对应于火腿示例
The question is now about how to get a float feature matrix from text data.
一种常见的方案是使用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]
标签:logistic-regression,python,machine-learning 来源: https://codeday.me/bug/20190910/1798810.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。