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

一、线性回归

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

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

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

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

一元线性回归模型:

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

相关推荐
陈广亮1 天前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬1 天前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia1 天前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区1 天前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两1 天前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪1 天前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
strayCat232551 天前
Clawdbot 源码解读 7: 扩展机制
人工智能·开源
王鑫星1 天前
SWE-bench 首次突破 80%:Claude Opus 4.5 发布,Anthropic 的野心不止于写代码
人工智能
lnix1 天前
当“大龙虾”养在本地:我们离“反SaaS”的AI未来还有多远?
人工智能·aigc