机器学习原理:
通过机器学习的方法,训练数据的训练,有目标或无目标的训练,以期望得到一个可以通过已知数据分类事物或预测未知数据的方法。
机器学习分类
1、有监督学习
分类问题 : K近邻、朴素贝叶斯、决策树、SVM
回归问题: 线性回归、逻辑回归、岭回归
2、无监督学习
聚类问题
K-Means
3、深度学习
通过软件构建模拟人类的神经元的工作模式,构成有输入和输出的多层神经网络结构,其实也是一种复杂的数学模型。
今天我们主要来了解一下机器中的常用算法
一 、 K近邻算法
原理:K近邻算法采用测量不同特征之间的距离方法进行分类(K-Nearest Neighbor, KNN),
其实就是勾股定理,计算两点间的距离。通过距离的远近来分类。公式如下:
两个点对应的数据的列的差值的平方和再开方。
P1 ( X1,Y1,Z1)
P2 (X2,Y2,Z2)
dist(P1,P2) ²= (X2-X1)²+(Y2-Y1)²+(Z2-Z1)²
优化:
我们可以看到,数据的大小对于KNN的算法的计算是有很大影响的。所以我们可以通过对训练集进行归一化处理。
Python 实现:推荐使用jupyter来写代码,可以一目了然,边思考边写。
使用sklearn模块的自带的算法可以方便的实现KNN,里面有已经封装好的各种机器学习算法。
KNN 分类算法
import sklearn.datasets as datasets from sklearn.model_selection import train_test_split iris = datasets.load_iris() data = iris.data #数据集 target = iris.target #数据集对应的鸢尾花的种类数据 #拆分数据集 为训练集和测试集 X_train,x_test,Y_train,y_test = train_test_train(data,target,test_size=0.1) #训练 knn = KNeighborsClassifier() knn.fit(X_train,y_train) #预测结果 y_predict = knn.predict(x_test) print (y_predict) #评分 score = knn.score(x_test,y_test)
print (score)
KNN回归算法
from sklearn.neighbor import KNeighborsRegressor X_train = np.linespace(0,10,50) y_train = np.sin(X_train) y_train[::3] += np.random.randn(30)* 0.25 X_test = np.linespace(0,10,1000) knn = KNeighborsRegress(n_neighbors=10) y_ = knn.predict(X_test.reshape(-1,1)) plt.scatter(X_train,y_train) plt.plot(X_test,y_,c=\'r\') plt.show()
二 线性回归和逻辑斯蒂回顾
1、线性回归,使用最小二乘法计算:选择未知数使得理论值和观测值的差的平方和最小
这个初中数学应该有提过。
对于一堆具有线性分布的数据的回归问题我们就可以使用最小二乘法,定义一个方程
Y = KX + B
Y\'为真实值
带入数据中的X值,得到的Y的值
对所有的Y与Y\'的值的平方和S,不断调整K和B的值,使得S最小,这个就是最小二乘法