sklearn之三分类应用

用到的代码目录:

1.入门demo:(先不关心具体数据是什么)

python代码:lr_iris.py

import numpy as np

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

def load_data():
    inputdata = datasets.load_iris()

    x_train, x_test, y_train, y_test = \
        train_test_split(inputdata.data, inputdata.target, test_size = 0.2, random_state=0)
    return x_train, x_test, y_train, y_test

def main():
    x_train, x_test, y_train, y_test = load_data()
    model = LogisticRegression(penalty='l1')
    model.fit(x_train, y_train)

    print "w: ", model.coef_
    print "b: ", model.intercept_
    print "precision: ", model.score(x_test, y_test)
    print "MSE: ", np.mean((model.predict(x_test) - y_test) ** 2)

if __name__ == '__main__':
    main()

1.将数据切分为20%的测试集,80%的训练集

2.调用逻辑回归的方法得到一个模型

3.将训练集数据放入模型进行学习训练

4.训练后得到结果

5.LogisticRegression(penalty='l2')中的l1是做稀疏化,通常是l2

模型:w,b

准确率:precision

执行结果:

第二步,单独得到w和b

代码 lr_out_model.py:

import numpy as np

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

def load_data():
    inputdata = datasets.load_iris()

    x_train, x_test, y_train, y_test = \
        train_test_split(inputdata.data, inputdata.target, test_size = 0.2, random_state=0)
    return x_train, x_test, y_train, y_test

def main():
    x_train, x_test, y_train, y_test = load_data()
    model = LogisticRegression(penalty='l2')
    model.fit(x_train, y_train)

    ff_w = open('model.w', 'w')
    ff_b = open('model.b', 'w')

    for w_list in model.coef_:
        for w in w_list:
            print >> ff_w, "w: ", w

    for b in model.intercept_:
        print >> ff_b, "b: ", b

    # print "w: ", model.coef_
    # print "b: ", model.intercept_
    print "precision: ", model.score(x_test, y_test)
    print "MSE: ", np.mean((model.predict(x_test) - y_test) ** 2)

if __name__ == '__main__':
    main()

w:每四个为一组,共12组

2.用我们自己找的数据得到一个model

验证模型的数据:

第一列:label(做2分类)

第二列:冒号左边:每一个数字代表一个特征

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
sklearn中,可以使用`MultinomialNB`类实现贝叶斯分类。假设我们有一个包含多个文档的文本集合,每个文档都属于某个类别,我们可以使用贝叶斯分类算法来预测新文档所属的类别。 首先,我们需要将文本集合转化为特征向量。可以使用`CountVectorizer`类将文本转换为词袋模型表示,然后使用`TfidfTransformer`类将词袋模型表示转换为TF-IDF表示,即将每个单词的出现次数除以该单词在整个文本集合中出现的文档数。 接下来,我们可以使用`MultinomialNB`类来训练模型和进行预测。下面是一个示例代码: ```python from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer from sklearn.naive_bayes import MultinomialNB # 假设我们有一些文本和对应的标签 texts = ['this is a good book', 'this is a bad book', 'good movie', 'bad movie'] labels = ['positive', 'negative', 'positive', 'negative'] # 将文本转换为词袋模型表示 vectorizer = CountVectorizer() X = vectorizer.fit_transform(texts) # 将词袋模型表示转换为TF-IDF表示 transformer = TfidfTransformer() X = transformer.fit_transform(X) # 训练模型 clf = MultinomialNB().fit(X, labels) # 预测新文本的类别 new_text = 'this is a great movie' new_X = transformer.transform(vectorizer.transform([new_text])) predicted_label = clf.predict(new_X)[0] print(predicted_label) # 输出 positive ``` 在上面的代码中,我们首先使用`CountVectorizer`将文本转换为词袋模型表示,然后使用`TfidfTransformer`将词袋模型表示转换为TF-IDF表示。然后,我们使用`MultinomialNB`类来训练模型和进行预测。最后,我们使用训练好的模型来预测新文本的类别。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曾牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值