简单机器学习——最简单分类算法(LogisticRegression二分类线性模型、LinearSVC一对其余分类器)

代码:

复制代码
# -- coding: gbk --
from sklearn.datasets import load_breast_cancer
from pylab import *
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.svm import LinearSVC
from sklearn.datasets import make_blobs
import mglearn
def LogisticRegression二分类线性模型():
    cancer = load_breast_cancer()
    X_train, X_test, y_train, y_test = train_test_split(
        cancer.data, cancer.target, stratify=cancer.target, random_state=42)

    '''构建模型'''
    logreg = LogisticRegression().fit(X_train, y_train)
    #print(logreg.predict())

    '''评测'''
    print("Training set score: {:.3f}".format(logreg.score(X_train, y_train)))
    print("Test set score: {:.3f}".format(logreg.score(X_test, y_test)))

    '''增加C拟合灵活度——————更高训练集精度'''
    logreg100 = LogisticRegression(C=100).fit(X_train, y_train)
    print("Training set score: {:.3f}".format(logreg100.score(X_train, y_train)))
    print("Test set score: {:.3f}".format(logreg100.score(X_test, y_test)))

def LinearSVC一对其余分类器():
    X, y = make_blobs(random_state=42)
    linear_svm = LinearSVC().fit(X, y)
    '''
    coef_的形状是(3, 2),说明coef_每行包含三个类别之一的系数向量,
    每列包含某个特征(这个数据集有2个特征)对应的系数值。
    现在intercept_是一维数组,保存每个类别的截距。 
    '''
    print(linear_svm.coef_)  # 特征
    print(linear_svm.intercept_)  # 截距

    mglearn.discrete_scatter(X[:, 0], X[:, 1], y)
    line = np.linspace(-15, 15)
    print(line)
    for coef, intercept, color in zip(linear_svm.coef_, linear_svm.intercept_, ['b', 'r', 'g']):
        plt.plot(line, -(line * coef[0] + intercept) / coef[1], c=color)
    plt.ylim(-10, 15)
    plt.xlim(-10, 8)
    plt.xlabel("Feature 0")
    plt.ylabel("Feature 1")
    plt.legend(['Class 0', 'Class 1', 'Class 2', 'Line class 0', 'Line class 1', 'Line class 2'], loc=(1.01, 0.3))
    plt.show()
if __name__ =='__main__':
    cancer = load_breast_cancer()
    X_train, X_test, y_train, y_test = train_test_split(
        cancer.data, cancer.target, stratify=cancer.target, random_state=42)
    logreg = LogisticRegression().fit(X_train, y_train)
    y_pred=logreg.predict(X_test)
    print(np.mean(y_pred==y_test))
复制代码

 

posted @   博二爷  阅读(845)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示