监督学习
KNN (k-nearest neighbors)
KNN 是用 k 个最近邻的训练数据集来寻找未知对象分类的一种算法
from sklearn import neighbors
classifier = neighbors. KNeighborsClassifier( num_neighbors, weights= 'distance' )
classifier. fit( X, y) test_datapoint = [ 4.5 , 3.6 ]
dist, indices = classifier. kneighbors( [ test_datapoint] )
knn_regressor = neighbors. KNeighborsRegressor( n_neighbors, weights= 'distance' )
y_values = knn_regressor. fit( X, y) . predict( x_values)
线性回归
优点: 简单、速度快 缺点: 普通线性回归对异常值敏感,会破坏整个模型, 可以使用岭回归的方法优化 缺点: 拟合准确度相对不高 回归是估计输入数据与连续值输出数据之间关系的过程 线性回归的目标是提取输入变量与输出变量的关联线性模型 普通最小二乘法(Ordinary Least Squares,OLS): 要求实际输出与线性方程, 预测的输出的残差平方和(sum of squares of differences)最小化
import sys
import numpy as np
from sklearn import linear_model
import matplotlib. pyplot as plt
X = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]
y = [ 22 , 22 , 23 , 24 , 25 , 27 , 27 , 30 , 29 , 30 ]
num_training = int ( 0.8 * len ( X) )
num_test = len ( X) - num_training
X_train = np. array( X[ : num_training] ) . reshape( ( num_training, 1 ) )
y_train = np. array( y[ : num_training] )
X_test = np. array( X[ num_training: ] ) . reshape( ( num_test, 1 ) )
y_test = np. array( y[ num_training: ] )
linear_regressor = linear_model. LinearRegression( )
linear_regressor. fit( X_train, y_train)
y_test_pred = linear_regressor. predict( X_test)
print ( '测试数据集的预测结果:' , y_test_pred)
plt. figure( )
plt. scatter( X_test, y_test, color= 'green' )
plt. plot( X_test, y_test_pred, color= 'black' , linewidth= 4 )
plt. title( 'Training data' )
plt. show( )
岭回归
岭回归是一种线性回归模型, 它通过对数据进行截距处理, 使得回归系数的绝对值不超过给定阈值 岭回归的优点是可以减小过拟合的风险, 并且可以处理异常值 岭回归的缺点是它对数据进行了截距处理
ridge_regressor = linear_model. Ridge( alpha= 0.8 , fit_intercept= True , max_iter= 100 )