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

一、线性回归

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

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

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

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

一元线性回归模型:

β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*(精确率*召回率)/精确率+召回率

相关推荐
X54先生(人文科技)6 分钟前
《元创力》纪实录 · 卷宗 3.6《不退场的人——Yuri尤栗外滩大会AI音乐会的碳硅协同推演全记录》
人工智能·深度学习·ai写作·开源协议
盟接之桥9 分钟前
线束数字化--先进先出为什么总是停留在纸面上?
大数据·网络·数据库·人工智能·制造·ai编程
阳明山水20 分钟前
因果一致性正则化实战解析
人工智能·深度学习·算法·机器学习·架构
甲维斯22 分钟前
首测LangCat2.5,美团牛鼻,远胜“卧龙凤雏”!
人工智能
Zentceh23 分钟前
夜间野生动物监测:AI全彩夜视+AI行为分析方案
图像处理·人工智能·科技·计算机视觉·车载系统·无人机·智能硬件
隔振降噪研究员24 分钟前
破碎机振动治理科普
大数据·人工智能
Yunovian35 分钟前
AI时代,针对模型与应用,浅谈一下各编程语言
开发语言·c++·人工智能·python·ai·rust·ai编程
木一i41 分钟前
多模态 AI 是什么?为什么它能看图、听音频、读文件?
人工智能·音视频
weixin_457760001 小时前
基于 YOLO11m-Pose 的动物姿态估计系统:从 Animal-Pose 标注到 Python 桌面部署
人工智能·python·深度学习
林伽一1 小时前
每任务成本成为模型选型新标尺,AI基础设施走向“可验证“ | 林伽一 · AI科技日报 | 2026年09月24日
人工智能·科技·ai