机器学习中常用的回归算法
机器学习中,回归算法用于预测连续型变量的值。在这篇文章中,我将为大家介绍一些常用的回归算法及其优缺点。线性回归(Linear Regression)线性回归是最基本的回归算法之一,它通过线性组合来建立输入变量和输出变量之间的关系。它非常适用于特征之间具有线性关系的问题。线性回归的优点是简单易懂、计算速度快,但它对于输入特征的要求比较高,对于非线性关系的数据表现不佳。多项式回归(Polynomial
机器学习中,回归算法用于预测连续型变量的值。在这篇文章中,我将为大家介绍一些常用的回归算法及其优缺点。
线性回归(Linear Regression)
线性回归是最基本的回归算法之一,它通过线性组合来建立输入变量和输出变量之间的关系。它非常适用于特征之间具有线性关系的问题。线性回归的优点是简单易懂、计算速度快,但它对于输入特征的要求比较高,对于非线性关系的数据表现不佳。
多项式回归(Polynomial Regression)
多项式回归是线性回归的拓展,它通过给输入变量添加高次项来拟合非线性关系。多项式回归可以适用于更复杂的数据集,但容易出现过拟合的问题。
岭回归(Ridge Regression)
岭回归是一种改进的线性回归算法,它通过对回归系数加上L2正则化项来防止过拟合。这样可以使得每个特征对模型的影响更加平均,避免某些特征对模型的影响过大。岭回归对于数据噪声较大的情况表现更好。
Lasso回归(Lasso Regression)
Lasso回归是一种类似于岭回归的算法,它采用L1正则化项来约束回归系数。与岭回归不同的是,Lasso回归可以将某些回归系数压缩为0,从而实现自动特征选择和降维,因此适用于具有大量特征但只有部分特征对输出变量有贡献的情况。
决策树回归(Decision Tree Regression)
决策树回归通过将输入数据划分为多个区域来拟合输入和输出之间的关系。它对于非线性问题的拟合效果比较好,并且可以进行可视化展示,非常易于理解。但是,决策树容易过拟合,在处理高维数据时会出现问题。
随机森林回归(Random Forest Regression)
随机森林回归是由多个决策树构成的集成算法,通过投票的方式来决定最终的预测结果。它不容易过拟合,同时也避免了决策树的某些问题。随机森林对于噪声和异常值的鲁棒性较好,同时也可以处理高维数据集。
在实际应用中,不同的回归算法因具体应用场景和数据而异,需要根据实际情况进行选择和调优。掌握这些常用的回归算法是机器学习初学者必备的技能。 以下是详细地示例
线性回归(Linear Regression)
线性回归是最基本的回归算法之一,它通过线性组合来建立输入变量和输出变量之间的关系。它非常适用于特征之间具有线性关系的问题。线性回归的优点是简单易懂、计算速度快,但它对于输入特征的要求比较高,对于非线性关系的数据表现不佳。
Python代码
import pandas as pd
from sklearn import datasets, linear_model
diabetes = datasets.load_diabetes()
df = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)
regr = linear_model.LinearRegression()
regr.fit(df[[‘age’, ‘bmi’]], diabetes.target)
print(‘Coefficients: \n’, regr.coef_)
R语言代码
线性回归(Linear Regression)
library(datasets)
diabetes <- data.frame(x=c(1,2,3,4,5), y=c(5,2,7,8,9))
fit <- lm(diabetes y d i a b e t e s y ~ diabetes y diabetesx)
summary(fit)
fit <- lm(diabetes y d i a b e t e s y ~ diabetes y diabetesx)
summary(fit)
多项式回归(Polynomial Regression)
多项式回归是线性回归的拓展,它通过给输入变量添加高次项来拟合非线性关系。多项式回归可以适用于更复杂的数据集,但容易出现过拟合的问题。
Python代码
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
boston = datasets.load_boston()
x = boston.data[:, [12]]
y = boston.target.reshape(-1, 1)
poly_features = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly_features.fit_transform(x)
lin_reg = LinearRegression()
lin_reg.fit(X_poly, y)
plt.scatter(x, y, color=‘gray’)
plt.plot(x, lin_reg.predict(poly_features.fit_transform(x)), color=‘red’, linewidth=2)
plt.show()
R语言代码
多项式回归(Polynomial Regression)
library(MASS)
library(datasets)
data(“Boston”)
Boston <- data.frame(Boston)
fit <- lm(medv ~ lstat + I(lstat^2), data = Boston)
summary(fit)
岭回归(Ridge Regression)
岭回归是一种改进的线性回归算法,它通过对回归系数加上L2正则化项来防止过拟合。这样可以使得每个特征对模型的影响更加平均,避免某些特征对模型的影响过大。岭回归对于数据噪声较大的情况表现更好。
Python代码
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.feature_selection import RFE
boston = datasets.load_boston()
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2)
selector = RFE(estimator=Ridge(alpha=1.0), n_features_to_select=5, step=1)
selector.fit(X_train, y_train)
print(selector.ranking_)
R语言代码
岭回归(Ridge Regression)
library(Matrix)
library(mlbench)
data(“BostonHousing”)
BostonHousing$medv[sample(1:nrow(BostonHousing), nrow(BostonHousing)/2)] <- NA
BostonHousing <- na.omit(BostonHousing)
model <- glm(medv ~ ., data = BostonHousing, family = gaussian, weight = 1)
fit <- glmnet(as.matrix(model m o d e l [ m o d e l model[model model[modelwhich[,1],-1]), model m o d e l [ m o d e l model[model model[modelwhich[,1],1], lambda = 1)
Lasso回归(Lasso Regression)
Lasso回归是一种类似于岭回归的算法,它采用L1正则化项来约束回归系数。与岭回归不同的是,Lasso回归可以将某些回归系数压缩为0,从而实现自动特征选择和降维,因此适用于具有大量特征但只有部分特征对输出变量有贡献的情况。
Python代码
from sklearn.linear_model import Lasso
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
boston = load_boston()
X = boston.data
y = boston.target
scaler = StandardScaler()
X = scaler.fit_transform(X)
lasso = Lasso(alpha=0.1)
lasso.fit(X, y)
print(lasso.coef_)
R语言代码
Lasso回归(Lasso Regression)
library(datasets)
data(“mtcars”)
fit <- lm(mpg ~ ., data = mtcars)
library(glmnet)
fit <- glmnet(as.matrix(mtcars[, -1]), mtcars[, 1], alpha = 1)
决策树回归(Decision Tree Regression)
决策树回归通过将输入数据划分为多个区域来拟合输入和输出之间的关系。它对于非线性问题的拟合效果比较好,并且可以进行可视化展示,非常易于理解。但是,决策树容易过拟合,在处理高维数据时会出现问题。
Python代码
import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn.datasets import load_boston
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
boston = load_boston()
X = boston.data[:, [5]]
y = boston.target.reshape(-1, 1)
tree_reg = DecisionTreeRegressor(max_depth=2)
tree_reg.fit(X, y)
y_pred = tree_reg.predict(X)
mse = mean_squared_error(y, y_pred)
print('Mean squared error: ', mse)
plt.scatter(X[:,0], y, color=‘gray’)
plt.plot(X[:,0], y_pred, color=‘red’, linewidth=2)
plt.show()
R语言代码
决策树回归(Decision Tree Regression)
library(rpart)
library(rpart.plot)
data(“Boston”)
Boston <- data.frame(Boston)
fit <- rpart(medv~., data=Boston, method=“anova”, minsplit=5)
printcp(fit)
rpart.plot(fit)
随机森林回归(Random Forest Regression)
随机森林回归是由多个决策树构成的集成算法,通过投票的方式来决定最终的预测结果。它不容易过拟合,同时也避免了决策树的某些问题。随机森林对于噪声和异常值的鲁棒性较好,同时也可以处理高维数据集。
Python代码
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import load_boston
boston = load_boston()
X = boston.data
y = boston.target
rf = RandomForestRegressor(n_estimators=500, random_state=0)
rf.fit(X, y)
importances = rf.feature_importances_
std = np.std([tree.feature_importances_ for tree in rf.estimators_], axis=0)
indices = np.argsort(importances)[::-1]
plt.bar(range(X.shape[1]), importances[indices],
color=“r”, yerr=std[indices], align=“center”)
plt.xticks(range(X.shape[1]), indices)
plt.show()
R语言代码
#随机森林回归(Random Forest Regression
library(mlbench)
data(“BostonHousing”)
BostonHousing <- data.frame(BostonHousing)
library(randomForest)
fit <- randomForest(medv ~ ., data=BostonHousing, ntree=500, importance=TRUE)
varImpPlot(fit)
- List item
更多推荐
所有评论(0)