一 机器学习分类
有监督学习
1 概述: 主要用于决策支持,它利用有标识的历史数据进行训练,以实现对新数据的表示的预测
2 分类: 分类计数预测的数据对象是离散的。如短信是否为垃圾短信,用户是否喜欢电子产品
比如: K近邻、朴素贝叶斯、决策树、SVM
3 回归: 回归技术预测的数据对象是连续值, 例如温度变化或时间变化。包括一元回归和多元回
归,线性回归和非线性回归: 例如 线性回归、逻辑回归、岭回归
无监督学习
1 概述: 数据无标识, 主要用于知识发现,在历史数据中发现隐藏的模式或内在结构
2 聚类: 聚类算法用于在数据中寻找隐藏的模式或分组。例如: K-means
半监督学习
1 概述: 在半监督学习方式下,训练数据有部分被标识,部分没有被标识,这种模型首先需要学习数据的内在结构,以便合理的组织数据来进行预测。算法上,包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。
二 线性回归数学原理\[ \theta^T: 特征权重的转置, \theta原本表示一维列矩阵,转置为一维行矩阵,X是一维列矩阵,此时\theta^T x代表行乘列的数值 \] 回归问题误差原理及公式推导
\[ \theta^Tx^{(i)} 表示预测值, y^{(i)}表示真实值,两者之间存在误差\epsilon^{(i)} \]
\[ L(\theta) 似然函数: \theta^Tx^{(i)}要想越接近与y^{(i)},代表求和概率P应该越大越好 \]
矩阵求导过程省略,公式太多,都是笔记本上推导的
线性回归代码实现原理
#导包 import matplotlib.pyplot as plt import numpy as np from sklearn import datasets #导入数据集 %matplotlib inline构造线性回归类
#构造类 class LinearRegression(): #初始化 def __init__(self): self.w = None #进行训练 def fit(self,X,y): print(X.shape) #(422, 1) X = np.insert(X,0,1,axis=1) #在列中新增x0 = 1的操作类似插入数据 print(X.shape) #(422, 2) print(X) X_ = np.linalg.inv(X.T.dot(X)) #x的转置dot(x)再取逆操作 self.w = X_.dot(X.T).dot(y) #再dot(x的转置)dot(y) #进行预测 def predict(self,X): X = np.insert(X,0,1,axis=1) y_pred = X.dot(self.w) return y_pred预测值与测试值平方求均值
#将预测与预测值power2次方 def mean_squared_error(y_true,y_pred): mse = np.mean(np.power(y_true-y_pred,2)) return mse主函数执行
def main(): #生成训练/测试数据 diabetes = datasets.load_diabetes() X = diabetes.data[:,np.newaxis,2] print(X.shape) #(442, 1) x_train,x_test = X[:-20],X[-20:] y_train,y_test = diabetes.target[:-20],diabetes.target[-20:] #线性回归数据导入:训练 预测 clf = LinearRegression() clf.fit(x_train,y_train) y_pred = clf.predict(x_test) print(mean_squared_error(y_test,y_pred)) #绘制图形 plt.scatter(x_test[:,0],y_test,color='black') plt.plot(x_test[:,0],y_pred,color='blue',linewidth=3) plt.show() 三 逻辑斯蒂回归