python svm 拟合后predict结果_Python机器学习必知必会--极简版_回归

python svm 拟合后predict结果_Python机器学习必知必会--极简版_回归_第1张图片

这一篇主要针对回归问题

用到的机器学习算法:

线性回归/Ridge/Lasso/弹性网

决策树/RF(随机森林)/GBDT/XGBoost

LinearSVM/SVM/B-P神经网络


数据准备:

###########################################
#各种机器学习算法在一个回归数据集上的使用
###########################################

###############
#主要机器学习算法
#############################################################
#线性回归/Ridge/Lasso/弹性网
#决策树/RF(随机森林)/GBDT/XGBoost
#LinearSVM/SVM/B-P神经网络
#############################################################
import numpy as np 
import pandas as pd
import matplotlib.pyplot as plt 

rng = np.random.RandomState(1)
X = np.linspace(0, 6, 100)[:, np.newaxis]
y = np.sin(X).ravel() + np.sin(6 * X).ravel() + rng.normal(0, 0.1, X.shape[0])
plt.scatter(X, y, c="k",label="training samples")

python svm 拟合后predict结果_Python机器学习必知必会--极简版_回归_第2张图片
数据

下面开始套各种模型:

################################################################################
plt.scatter(X, y, c="k",label="training samples")

from sklearn.linear_model import LinearRegression                #线性回归
lin_reg=LinearRegression()                                       #声明
lin_reg.fit(X,y)                                                 #训练/拟合
print(lin_reg.coef_);print(lin_reg.intercept_)                   #回归系数/截距项
y_pred_lin=lin_reg.predict(X)                                    #预测
plt.plot(X,y_pred_lin,c="red",label="LinearRegression")

from sklearn.linear_model import Ridge                           #岭回归
ridge_reg=Ridge(alpha=1,solver='cholesky')                       #声明
ridge_reg.fit(X,y)                                               #训练/拟合
print(ridge_reg.coef_);print(ridge_reg.intercept_)                #系数/截距项
y_pred_ridge=ridge_reg.predict(X)                                #预测
plt.plot(X,y_pred_ridge,c="blue",label="Ridge")

from sklearn.linear_model import Lasso                           #Lasso回归
lasso_reg=Lasso(alpha=0.1)                                       #声明
lasso_reg.fit(X,y)                                               #训练/拟合
print(lasso_reg.coef_);print(lasso_reg.intercept_)               #系数/截距项
y_pred_lasso=lasso_reg.predict(X)                                 #预测
plt.plot(X,y_pred_lasso,c="yellow",label="Lasso")

from sklearn.linear_model import ElasticNet                      #弹性网
elastic_net=ElasticNet(alpha=0.1,l1_ratio=0.5)                   #声明       
elastic_net.fit(X,y)                                             #训练/拟合
print(elastic_net.coef_);print(elastic_net.intercept_)           #系数/稀疏系数/截距项
y_pred_elastic=elastic_net.predict(X)                            #预测
plt.plot(X,y_pred_elastic,c="green",label="ElasticNet")

plt.xlabel("data")
plt.ylabel("target")
plt.title("Method")
plt.legend()

python svm 拟合后predict结果_Python机器学习必知必会--极简版_回归_第3张图片
################################################################################
plt.scatter(X, y, c="k",label="training samples")
plt.plot(X,y_pred_lin,c="grey",label="LinearRegression")

from sklearn.tree import DecisionTreeRegressor                   #回归决策树
tree_reg=DecisionTreeRegressor(max_depth=3,random_state=7)       #声明
tree_reg.fit(X,y)                                                #训练/拟合
y_pred_tree=tree_reg.predict(X)                                  #预测
plt.plot(X,y_pred_tree,c="red",label="DecisionTree")

from sklearn.ensemble import RandomForestRegressor               #随机森林回归
forest_reg=RandomForestRegressor(max_depth=3,random_state=7)     #声明
forest_reg.fit(X,y)                                              #训练/拟合
y_pred_forest=forest_reg.predict(X)                              #预测
plt.plot(X,y_pred_forest,c="green",label="RandomForest")

from sklearn.ensemble import GradientBoostingRegressor           #梯度提升回归
gbdt_reg=GradientBoostingRegressor(                              #声明
	max_depth=3,n_estimators=10,                                 #树的最大深度为3,迭代次数为10            
	learning_rate=1,random_state=7                               #学习率为1
	) 
gbdt_reg.fit(X,y)                                                #训练/拟合
y_pred_gdbt=gbdt_reg.predict(X)                                  #预测
plt.plot(X,y_pred_gdbt,c="blue",label="GradientBoosting")

from xgboost import XGBRegressor                                 #XGBoost回归
xgb_reg=XGBRegressor(max_depth=3,random_state=7)                 #声明
xgb_reg.fit(X,y)                                                 #训练/拟合
y_pred_xgb=xgb_reg.predict(X)                                    #预测
plt.plot(X,y_pred_xgb,c="purple",label="XGB")

plt.xlabel("data")
plt.ylabel("target")
plt.title("Method")
plt.legend()

python svm 拟合后predict结果_Python机器学习必知必会--极简版_回归_第4张图片
################################################################################
plt.scatter(X, y, c="k",label="training samples")
plt.plot(X,y_pred_lin,c="grey",label="LinearRegression")

from sklearn.svm import LinearSVR                        #线性支持向量机回归
svm_reg=LinearSVR()                                      #声明
svm_reg.fit(X,y)                                         #训练/拟合
y_pred_LinearSVR=svm_reg.predict(X)                      #预测
plt.plot(X,y_pred_LinearSVR,c="green",label="LinearSVR")        

from sklearn.svm import SVR                              #支持向量机回归
svm_reg=SVR()                                            #声明,默认采用高斯RBF核函数,其他参数也有默认值,具体见help
svm_reg.fit(X,y)                                         #训练
y_pred_SVR=svm_reg.predict(X)                            #预测
plt.plot(X,y_pred_SVR,c="blue",label="SVR")

from sklearn.neural_network import MLPRegressor          #神经网络回归(多层感知机回归)
mlp_reg=MLPRegressor(hidden_layer_sizes=(20,20,20),      #声明
	random_state=7,solver='lbfgs'                        #设置了两层隐藏层,更多参数见help
	)
mlp_reg.fit(X,y)                                         #训练/拟合
y_pred_mlp=mlp_reg.predict(X)                            #预测
plt.plot(X,y_pred_mlp,c="purple",label="MLP")

plt.xlabel("data")
plt.ylabel("target")
plt.title("Method")
plt.legend()

python svm 拟合后predict结果_Python机器学习必知必会--极简版_回归_第5张图片

实际应用中要根据实际的问题背景、数据特征,选择合适的模型,之后还有进一步的调参等等,关于这些可以自行百度(我以后总结了也会放上来)。

你可能感兴趣的:(python,svm,拟合后predict结果)