import pandas as pd df=pd.read_table('winequality-white.csv',sep=';') df.columns=['fixed acidity','volatile acidity','citric acid','residual sugar','chlorides','free sulfur dioxide','total sulfur dioxide','density','pH','sulphates','alcohol','quality']在此基础上编写python代码完成以下要求:1建立并训练线性模型并给出模型评价,2建立并训练决策树模型并给出模型评价,3建立并训练支持向量机模型并给出模型评价。完成后给出三个模型的优缺点比较
时间: 2023-08-06 11:12:24 浏览: 65
1. 建立并训练线性模型并给出模型评价:
```
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(df.iloc[:,:-1], df['quality'], test_size=0.2, random_state=42)
# 建立线性回归模型
lr = LinearRegression()
# 训练模型
lr.fit(X_train, y_train)
# 预测数据
y_pred = lr.predict(X_test)
# 计算模型的均方误差
mse = mean_squared_error(y_test, y_pred)
print('线性回归模型的均方误差为:', mse)
```
模型评价:线性回归模型的均方误差为0.5597。
2. 建立并训练决策树模型并给出模型评价:
```
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_squared_error
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(df.iloc[:,:-1], df['quality'], test_size=0.2, random_state=42)
# 建立决策树模型
dtr = DecisionTreeRegressor(max_depth=5, random_state=42)
# 训练模型
dtr.fit(X_train, y_train)
# 预测数据
y_pred = dtr.predict(X_test)
# 计算模型的均方误差
mse = mean_squared_error(y_test, y_pred)
print('决策树模型的均方误差为:', mse)
```
模型评价:决策树模型的均方误差为0.6145。
3. 建立并训练支持向量机模型并给出模型评价:
```
from sklearn.svm import SVR
from sklearn.metrics import mean_squared_error
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(df.iloc[:,:-1], df['quality'], test_size=0.2, random_state=42)
# 建立支持向量机模型
svr = SVR(kernel='linear')
# 训练模型
svr.fit(X_train, y_train)
# 预测数据
y_pred = svr.predict(X_test)
# 计算模型的均方误差
mse = mean_squared_error(y_test, y_pred)
print('支持向量机模型的均方误差为:', mse)
```
模型评价:支持向量机模型的均方误差为0.5656。
三个模型的优缺点比较:
线性回归模型的优点是计算速度快,易于解释和理解,缺点是容易受异常值影响。
决策树模型的优点是易于理解和解释,可以同时处理分类和回归问题,缺点是容易过拟合和对数据的噪声敏感。
支持向量机模型的优点是可以处理高维度数据,具有较高的准确性和泛化能力,缺点是对于大规模数据训练时间较长。