注意,目标列不在最后一列,能不能手动输入目标列的名字来定位呢
时间: 2023-12-06 14:03:23 浏览: 23
当目标列不在最后一列时,可以使用`pandas.DataFrame.loc`方法来定位目标列。该方法可以根据标签或布尔数组来选择DataFrame的行和列。
以下是使用目标列名称来定位目标列的例子:
```python
# 导入所需库和数据集
from sklearn.model_selection import train_test_split, cross_val_score, KFold
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
import pandas as pd
# 读取数据集
data = pd.read_csv('data.csv')
# 获取特征集和目标集
feature_cols = data.columns[:-1] # 获取所有特征列
target_col = 'target' # 目标列的名称
X = data[feature_cols].values
y = data[target_col].values
# 特征缩放
scaler = StandardScaler()
X = scaler.fit_transform(X)
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 创建支持向量机模型
svm = SVC(kernel='linear', random_state=0)
# 训练模型
svm.fit(X_train, y_train)
# 评估模型
y_pred = svm.predict(X_test)
accuracy = svm.score(X_test, y_test)
print('Accuracy:', accuracy)
# K折交叉验证
cv = KFold(n_splits=5, random_state=0, shuffle=True)
scores = cross_val_score(svm, X, y, cv=cv)
print('Cross-validation scores:', scores)
print('Mean score:', scores.mean())
```
在这里,我们使用了`data.columns`属性获取所有列名,然后使用切片操作获取所有特征列。接着,使用目标列的名称来定位目标列。最后,使用特征集和目标集来训练和评估支持向量机模型,以及使用K折交叉验证来验证模型的拟合度。