机器学习基本概念解析,机器学习算法概论,机器学习疑难解答,代码分享

Posted yk 坤帝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习基本概念解析,机器学习算法概论,机器学习疑难解答,代码分享相关的知识,希望对你有一定的参考价值。

个人公众号 yk 坤帝
后台回复 机器学习解析 获取完整源代码

全文疑难仅代表个人理解,如有差错,不完美的地方,
欢迎各位大佬斧正,感激不尽!!!

1.求解有监督分类问题的一般过程

2.什么是训练集、测试集

3.什么是预测模型

4.什么是损失函数

5.模型训练与模型测试的区别

6.简单房价预测问题

7.Logistic 回归与一般回归方程的区别?

8.朴素贝叶斯数学理论解析

9.机器学习基本算法汇总(附源代码)

9.1 demo06_boston.ipynb 波士顿地区房屋价格预测



利用机器学习进行发票识别

10.demo01-LinearRegression 线性回归算法

1.求解有监督分类问题的一般过程

收集数据集,探索性数据分析,数据预处理,数据分割,利用训练集建立预测模型,选择最佳模型,训练–验证–测试集分割,模型建立,参数调优,模型评价。

2.什么是训练集、测试集

在机器学习模型的开发过程中,希望训练好的模型能在新的、未见过的数据上表现良好。为了模拟新的、未见过的数据,对可用数据进行数据分割,从而将其分割成2部分(有时称为训练—测试分割)。特别是,第一部分是较大的数据子集,用作训练集(如占原始数据的80%),第二部分通常是较小的子集,用作测试集(其余20%的数据)。需要注意的是,这种数据拆分只进行一次。

3.什么是预测模型

利用训练集建立预测模型,然后将这种训练好的模型应用于测试集(即作为新的、未见过的数据)上进行预测。

4.什么是损失函数

用来估量模型的预测值f (x)与真实值Y的不一致程度

5.模型训练与模型测试的区别

模型训练:将训练集数据进行训练,求出预测函数
模型测试:将测试集数据放进预测函数中进行模拟、检验

6.简单房价预测问题

假设房屋价格只与房屋面积有关(x_i表示),价格为y,
求基于一元线性回归的预测模型?
求基于均方误差的损失函数?
求解回归模型的参数?

基于一元线性回归的预测模型: yi=wxi+ b
基于均方误差的损失函数:

回归模型的参数:

7.Logistic 回归与一般回归方程的区别?

与预测模型的区别?
与损失函数的区别?
与应用场景的区别?

7.1与预测模型的区别

预测模型
线性回归:一般用向量形式表示 f(x),即



Logistic 回归:


当p0(xi)<0.5时,即zi<0时,则令yi=0(预测为负)
当p0(xi)>0.5时,即zi>0时,则令yi=0(预测为正)
p0(xi)值越小分类为0(负)概率越高,反之分类为1(正)概率越大。

7.2与损失函数的区别

线性回归:线性回归是连续的,所以可以使用MSE来定义损失函数。


Logistic回归:逻辑回归不是连续的,线性回归损失函数定义的经验无法使用。可以用最大似然法来推导出损失函数,

7.3与应用场景的区别

线性回归模型的先决条件是所有的变量都是连续变量,随着自变量 x 的增加,因变量 y 也 会增加;Logistic 回归适合当因变量为离散变量时,拟合出 x 与 y 的关系。

8.朴素贝叶斯数学理论解析

使用朴素贝叶斯方法,预测x=2,𝑆对应的类别标签(y)


解答过程,需要一定的数学基础:

9.机器学习基本算法汇总(附源代码)

9.1 demo06_boston.ipynb 波士顿地区房屋价格预测
问题六简单房价预测问题的代码部分:


个人公众号 yk 坤帝 
后台回复 机器学习解析  获取完整源代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


import sklearn.datasets as sd 
boston = sd.load_boston()
#boston.keys()
print(boston.DESCR)

boston.keys()
boston.data
boston.data.shape,boston.target

boston.data.shape,boston.target.shape
boston.data[0],boston.target[0]


#加载数据集
import sklearn.datasets as sd
boston = sd.load_boston()

#将数据存入dataframe
data = pd.DataFrame(boston.data,columns= boston.feature_names)
data['TARGET'] = boston.target
data.describe()

#对某些字段进行简单的数据分析
data.pivot_table(index = 'CHAS',values = ['TARGET'])


#如果想使用这组数据训练线性模型,则要先验证特征与输出的关系是否是线性关系
data.plot.scatter(x = 'RM', y = 'TARGET')

data.plot.scatter(x = 'DIS', y = 'TARGET')

data.plot.scatter(x = 'PTRATIO', y = 'TARGET')

plt.scatter(x = data['PTRATIO'], y = data['TARGET'])
import sklearn.model_selection as ms 
import sklearn.metrics as sm 
import sklearn.linear_model as lm

#整理输入输出集,拆分测试集训练集
x,y = data.iloc[:,:-1] ,data['TARGET']
#x.shape,y.shape
#random_state:随机种子 对同一组数据使用相同的随机种子划分数据集,得到的结果是一样的
train_x,test_x,train_y,test_y = \\
ms.train_test_split(x,y,test_size = 0.1,random_state = 7)

train_x.shape,train_y.shape

#训练一个模型
model = lm.LinearRegression()
model.fit(train_x,train_y)

#针对测试样本进行测试,评估
pred_test_y = model.predict(test_x)
print(sm.r2_score(test_y,pred_test_y))


10.demo01-LinearRegression 线性回归算法

个人公众号 yk 坤帝 
后台回复 机器学习解析  获取完整源代码

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd 

x = np.array([0.5, 0.6,0.8,1.1,1.4])
y = np.array([5.0,5.5,6.0,6.8,7.0])

#加载数据集
data = pd.read_csv('qq邮箱.csv')
#data
x = data['YearsExperience']
y = data['Salary']

plt.grid(linewidth = 2)
plt.scatter(x,y,s = 60,color = 'dodgerblue' ,label = 'Samples')

基于梯度下降算法,不断更新w0与w1,从而找到最佳的模型参数

个人公众号 yk 坤帝 
后台回复 机器学习解析  获取完整源代码

# x = np.array([0.5, 0.6,0.8,1.1,1.4])
# y = np.array([5.0,5.5,6.0,6.8,7.0])

#基于梯度下降算法,不断更新w0与w1,从而找到最佳的模型参数
w0,w1,lrate = 1,1,0.001
times = 600

w0s,w1s,losses,epoches = [],[],[],[]

for i in range(times):
    #输出每一轮运算过程中,w0,w1,loss的变化过程
    loss = 1/2 * ((w0 + w1*x - y)**2).sum()
    print(':4,w0::.8f,w1::.8f,loss::.8f'.format(i+1,w0,w1,loss))

    epoches.append(i+1)
    w0s.append(w0)
    w1s.append(w1)
    losses.append(loss)

    #计算w0与w1方向上的偏导数,代入模型参数的更新公式
    d0 = (w0 + w1*x - y).sum()
    d1 = (x*(w0 + w1*x - y)).sum()

    w0 = w0 - lrate*d0
    w1 = w1 - lrate*d1
w0,w1  #(截距,斜率)

#绘制样本点
plt.grid(linestyle = ':')
plt.scatter(x,y,s = 60,color = 'dodgerblue' ,label = 'Samples')

#绘制回归线
pred_y = w0 + w1 * x
plt.plot(x , pred_y , color = 'orangered' ,
         linewidth = '2', label = 'Regression Line')

plt.subplot(3,1,1)
plt.grid(linestyle = ':')
plt.ylabel('w0')
plt.plot(epoches,w0s,color = 'dodgerblue',label = 'w0')
plt.legend()

plt.subplot(3,1,2)
plt.grid(linestyle = ':')
plt.ylabel('w1')
plt.plot(epoches,w1s,color = 'dodgerblue',label = 'w1')
plt.legend()

plt.subplot(3,1,3)
plt.grid(linestyle = ':')
plt.ylabel('loss')
plt.plot(epoches,losses,color = 'orangered',label = 'loss')
plt.legend()

plt.subplot(3,1,1)
plt.grid(linestyle = ':')
plt.ylabel('w0')
plt.plot(epoches,w0s,color = 'dodgerblue',label = 'w0')
plt.legend()

plt.xticks([])

plt.subplot(3,1,2)
plt.grid(linestyle = ':')
plt.ylabel('w1')
plt.plot(epoches,w1s,color = 'dodgerblue',label = 'w1')
plt.legend()

plt.xticks([])

plt.subplot(3,1,3)
plt.grid(linestyle = ':')
plt.ylabel('loss')
plt.plot(epoches,losses,color = 'orangered',label = 'loss')
plt.legend()


全文疑难仅代表个人理解,如有差错,不完美的地方,
欢迎各位大佬斧正,感激不尽!!!

个人公众号 yk 坤帝
后台回复 机器学习解析 获取完整源代码

以上是关于机器学习基本概念解析,机器学习算法概论,机器学习疑难解答,代码分享的主要内容,如果未能解决你的问题,请参考以下文章

统计学习方法--机器学习概论

1.机器学习概论

机器学习聚类算法(理论)

Python深度学习之路-1 机器学习概论

Python深度学习之路-1 机器学习概论

Python深度学习之路-1 机器学习概论