import pandas as pd from sklearn.linear_model import LinearRegression # 读取 EXCEL 文件 df = pd.read_excel('D://数据1.xlsx', sheet_name='8') # 取出训练数据 X_train = df.iloc[:, :-1] y_train = df.iloc[:, -1] # 初始化线性回归模型 lr = LinearRegression() # 训练模型 lr.fit(X_train, y_train) # 预测数据 X_test = [[0, 0, 1, 0, 1, 1, 1, 2]] y_pred = lr.predict(X_test) # 输出预测结果 print('预测结果:', y_pred[0])运行一个线性回归模型时遇到了 TypeError。错误信息提示说,特征名只在所有输入特征都具有字符串名称/列名称类型时受支持,但你的输入具有整数和字符串特征名/列名称类型。如果你想要存储和验证特征名,必须将它们全部转换为字符串,例如使用 X.columns = X.columns.astype(str)。否则,你可以从输入数据中删除特征/列名称,或将它们全部转换为非字符串数据类型怎么改
时间: 2024-02-16 22:03:37 浏览: 79
你可以将以下代码添加到读取 EXCEL 文件后面,以将所有特征名转换为字符串类型:
```
df.columns = df.columns.astype(str)
```
这将确保所有特征名都是字符串类型,从而解决 TypeError。完整代码如下:
```
import pandas as pd
from sklearn.linear_model import LinearRegression
# 读取 EXCEL 文件
df = pd.read_excel('D://数据1.xlsx', sheet_name='8')
# 将所有特征名转换为字符串类型
df.columns = df.columns.astype(str)
# 取出训练数据
X_train = df.iloc[:, :-1]
y_train = df.iloc[:, -1]
# 初始化线性回归模型
lr = LinearRegression()
# 训练模型
lr.fit(X_train, y_train)
# 预测数据
X_test = [[0, 0, 1, 0, 1, 1, 1, 2]]
y_pred = lr.predict(X_test)
# 输出预测结果
print('预测结果:', y_pred[0])
```
相关问题
import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import r2_score df = pd.read_csv('train_price.csv') # 筛选bodyType为'微型车'的样本 df = df[df['bodyType'] == '微型车'] # 选择price作为目标变量,yearMade、modelId作为特征变量 X = df[['yearMade', 'modelId']] y = df['price'] # 使用train_test_split划分,random_state为学号后4位 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1234) # 训练线性回归模型 lr = LinearRegression() lr.fit(X_train, y_train) # 预测测试样本并计算R2 y_pred = lr.predict(X_test) r2 = r2_score(y_test, y_pred) print('R2值为:', r2)
这段代码是用来训练一个简单的线性回归模型,对微型车的价格进行预测,并计算预测结果的R2值。其中使用了pandas库读取CSV文件,使用train_test_split函数将数据集划分为训练集和测试集,使用LinearRegression类创建一个线性回归模型,并使用fit方法对训练数据进行拟合,使用predict方法对测试数据进行预测,并使用r2_score函数计算预测结果的R2值。
# 导入需要的库import pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.svm import SVCfrom sklearn.metrics import accuracy_score, confusion_matrix# 读取 Excel 表格数据df = pd.read_excel('data.xlsx')# 分离特征变量和因变量X = df.iloc[:, :-1]y = df.iloc[:, -1]# 将数据分为训练集和验证集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 训练支持向量机模型svm = SVC(kernel='linear')svm.fit(X_train, y_train)# 预测新的数据new_data = pd.read_excel('new_data.xlsx')y_pred = svm.predict(new_data)# 输出预测结果到 Excel 表格new_data['Prediction'] = y_prednew_data.to_excel('predictions.xlsx', index=False)# 输出模型精度和混淆矩阵print('Accuracy:', accuracy_score(y_test, svm.predict(X_test)))print('Confusion Matrix:', confusion_matrix(y_test, svm.predict(X_test)))输出混淆矩阵图片
由于我是一个文本AI模型,无法在这里直接输出图片,但是可以通过代码生成并保存混淆矩阵图片,代码如下:
```python
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
from sklearn.metrics import confusion_matrix
# 读取 Excel 表格数据
df = pd.read_excel('data.xlsx')
# 分离特征变量和因变量
X = df.iloc[:, :-1]
y = df.iloc[:, -1]
# 将数据分为训练集和验证集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 训练支持向量机模型
svm = SVC(kernel='linear')
svm.fit(X_train, y_train)
# 预测新的数据
new_data = pd.read_excel('new_data.xlsx')
y_pred = svm.predict(new_data)
# 输出预测结果到 Excel 表格
new_data['Prediction'] = y_pred
new_data.to_excel('predictions.xlsx', index=False)
# 输出模型精度和混淆矩阵
print('Accuracy:', accuracy_score(y_test, svm.predict(X_test)))
confusion = confusion_matrix(y_test, svm.predict(X_test))
print('Confusion Matrix:', confusion)
# 生成混淆矩阵图片并保存
plt.figure(figsize=(8, 6))
sns.heatmap(confusion, annot=True, cmap='Blues')
plt.xlabel('Predicted Label')
plt.ylabel('True Label')
plt.title('Confusion Matrix')
plt.savefig('confusion_matrix.png')
```
这段代码会在运行时生成一个名为 `confusion_matrix.png` 的图片文件,保存在当前工作目录下。你可以打开该文件查看混淆矩阵图片。
阅读全文