机器学习基础(线性,逻辑回归)

一、线性回归

线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。

相关关系:包含因果关系和平行关系

因果关系:回归分析【原因引起结果,需要明确自变量和因变量】

平行关系:相关分析【无因果关系,不区分自变量和因变量】

一元线性回归模型:

βo和β1是模型参数。E:是误差项。

误差项:除线性因素外的随机因素所产生的误差。

多元线性回归模型:

1.线性回归API文档参数

sklearn.linear_model.LinearRegression (fit_intercept=True , normalize=False , copy_X=True , n_jobs=None )

1)参数

fit_intercept: 是否有截据,如果没有则直线过原点。

**normalize:**是否将数据归一化。

**copy_X :**是否对X复制,如果选择false,则直接对原数据进行覆盖。(即经过中心化,标准化后,是否把新数据覆盖到原数据上)

n_jobs: 计算时设置的任务个数(number of jobs)。如果选择-1则代表使用所有的CPU。这一参数的对于目标个数>1(n_targets>1)且足够大规模的问题有加速作用。

2)Attributes:返回值

C oef **_:**对于线性回归问题计算得到的feature的系数。如果输入的是多目标问题,则返回一个二维数组(n_targets, n_features);如果是单目标问题,返回一个一维数组 (n_features,)。

**intercept_ :**线性模型中的独立项。

3)方法

**fit(X, y[, n_jobs]) :**对训练集X, y进行训练。

**predict(X):**使用训练得到的估计器对输入为X的集合进行预测(X可以是测试集,也可以是需要预测的数据)。

**score(X, y[,]sample_weight):**预测效果评分。

复制代码
import pandas as pd#pandas基于numpy封装的
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression

data = pd.read_csv("data.csv")
a = data.广告投入
#绘制散点图
plt.scatter(data.广告投入, data.销售额)
plt.show()

# corr = data.corr()#求x和y的相关系数
#估计模型参数,建立回归模型
lr = LinearRegression()
x = data[['广告投入']]
y = data[['销售额']]

lr.fit(x, y)#训练模型,

#第四步、对回归模型进行检验
"""此处的score指R方"""
result = lr.predict(x)
score = lr.score(x, y)

a = round(lr.intercept_[0],2)#查看截距
b = round(lr.coef_[0][0], 2)#查看斜率
print("线性回归模型为:y = {}x + {}.".format(b, a))

#第五步、利用回归模型进行预测
predict = lr.predict([[40], [45], [50]])
print(predict)

二、逻辑回归

在线性回归的基础上进行分类衍生出了逻辑回归

逻辑回归(LogisticRegression) 是一种广泛用于二分类和多分类任务的线性模型,支持 L1/L2/Elastic-Net 正则化。

lr=LogisticRegression(C=0.01)

C:正则化强度的倒数,值越小正则化越强

fit() 用于训练模型;predict() 输出类别标签;score() 计算准确率。labels_count=pd.value_counts(data['Class'])可以统计data('class')中每个类的个数

python 复制代码
import pandas as pd

data=pd.read_csv("creditcard.csv")

from sklearn.preprocessing import StandardScaler
#z-标准化
scaler=StandardScaler()
data['Amount']=scaler.fit_transform(data[['Amount']])
data=data.drop(['Time'],axis=1)#axis=1,表示删除列

#绘制图形
import matplotlib.pyplot as plt
from pylab import mpl   #matplotlib不能显示中文,借助于pylab实现中文显示

mpl.rcParams['font.sans-serif']=['Microsoft YaHei']#显示中文
mpl.rcParams['axes.unicode_minus']= False
labels_count=pd.value_counts(data['Class'])#同济data('class')中每个类的个数
print(labels_count)

plt.title("正负例样本数")#设置标题
plt.xlabel("类别")
plt.ylabel("数量")
labels_count.plot(kind='bar')
plt.show()

'''建立模型'''
from sklearn.model_selection import  train_test_split
x_whole=data.drop("Class",axis=1)
y_whole=data.Class

x_train_w,x_test_w,y_train_w,y_test_w=train_test_split\
    (x_whole,y_whole,test_size=0.3,random_state=1000)

from sklearn.linear_model import LogisticRegression #逻辑回归API
lr=LogisticRegression(C=0.01)
lr.fit(x_train_w,y_train_w)

test_predicted=lr.predict(x_test_w)
result=lr.score(x_test_w,y_test_w)

from sklearn import metrics
print(metrics.classification_report(y_test_w,test_predicted))#获得混淆矩阵的准确值,召回值。
  1. 通过train_test_split(x_whole,y_whole,test_size=0.3,random_state=1000)来切分数据,通过test_size参数为整数时取对应数量的特征,小数时取百分比的;通过random_state参数来获得对应的随机种子。

  2. 通过metrics.classification_report(y_test_w,test_predicted))#获得混淆矩阵的准确值,召回值和F1值。来判断模型训练的好不好

三、评价方法

混淆矩阵:

精确率:TP/(TP+FP)

召回率:TP/(TP+FN) 多用于医疗领域系统

f1值:2*(精确率*召回率)/精确率+召回率

相关推荐
TechMasterPlus1 分钟前
OpenClaw 源码深度解析:下一代 AI Agent 框架的架构设计与实现原理
人工智能
不完备智能5 分钟前
🦌 DeerFlow 2.0 深度解析:字节跳动开源的"超级 Agent harness"架构揭秘
人工智能
阿木木AEcru5 分钟前
DeepSeek 崩了 13 小时,不是故障,是 V4 在换引擎
人工智能
小小工匠6 分钟前
Superpowers - 09 从构思到落地:如何用「计划编写与任务粒度」驾驭 AI 时代的软件开发
人工智能·skills·superpowers
阿聪谈架构6 分钟前
第07章(下):LangGraph 工作流进阶 —— 检查点、人工介入与多 Agent 协作
人工智能·后端
小小工匠9 分钟前
Superpowers - 08 在 AI 时代重写「需求评审会」:深入解读 Superpowers 的头脑风暴与设计规范机制
人工智能·skills·superpowers
橘子编程16 分钟前
Hermes Agent 完整使用指南
人工智能
yuhulkjv33519 分钟前
AI导出的Excel公式失效
人工智能·ai·chatgpt·excel·豆包·deepseek·ai导出鸭
七夜zippoe23 分钟前
OpenClaw 子代理(Subagent)机制详解
大数据·人工智能·subagent·openclaw·子代理
薛定e的猫咪28 分钟前
【Neural Networks 2025】TDAG 论文解读:多智能体不是重点,动态任务分解才是关键
人工智能·深度学习·计算机视觉