通过read_csv()或read_table()函数读取训练集(BPdata_train.txt)和测试集(BPdata_test.txt)数据。
在Python中,如果你使用的是pandas库来处理文本数据,特别是CSV或表格格式的数据,可以使用read_csv()
或read_table()
函数来加载BPdata_train.txt
和BPdata_test.txt
文件。这两个函数都是从pandas模块导入的,假设文件中是逗号分隔值(CSV),语法如下:
import pandas as pd
# 读取训练集数据
train_data = pd.read_csv('BPdata_train.txt', delimiter=',') # 如果文件中不是默认的逗号分隔,需要指定delimiter参数
train_data.head() # 查看数据的前几行以确认是否正确加载
# 读取测试集数据
test_data = pd.read_csv('BPdata_test.txt', delimiter=',')
# 或者如果文件采用制表符或其他特殊字符作为分隔符
# test_data = pd.read_table('BPdata_test.txt', sep='\t')
# 分别查看训练集和测试集的前几行
print(train_data.head())
print(test_data.head())
这里sep
参数可以根据实际文件的分隔符来设置,例如\t
表示制表符。
import pandas as pd import numpy as np from sklearn.preprocessing import Imputer from sklearn.model_selection import train_test_split df_table_all = pd.read_csv("D:\python_pytharm\datasets\chapter3_data_handled\\train_all.csv", index_col=0) df_table_all = df_table_all.drop(['LOAN_DATE_x'], axis=1) df_table_all = df_table_all.drop(['LOAN_DATE_y'], axis=1) df_table_all = df_table_all.dropna(axis=1,how='all') columns = df_table_all.columns imr = Imputer(missing_values='NaN', strategy='mean', axis=0) df_table_all = pd.DataFrame(imr.fit_transform(df_table_all.values)) df_table_all.columns = columns df_table_all.to_csv("D:\python_pytharm\datasets\chapter3_data_handled\\trainafter.csv")解释代码
这段代码主要进行数据处理,包括读取csv文件、删除指定列和删除全为NaN的列。然后使用Imputer类对NaN值进行填充,填充方法为使用该列的平均值。最后将处理后的数据保存为新的csv文件。
具体代码解释如下:
import pandas as pd import numpy as np from sklearn.preprocessing import Imputer from sklearn.model_selection import train_test_split 导入所需的库和模块。
df_table_all = pd.read_csv("D:\python_pytharm\datasets\chapter3_data_handled\train_all.csv", index_col=0) 使用pandas库中的read_csv()函数读取指定路径下的csv文件,将其存储为DataFrame格式,并将第一列作为索引列。
df_table_all = df_table_all.drop(['LOAN_DATE_x'], axis=1) df_table_all = df_table_all.drop(['LOAN_DATE_y'], axis=1) 使用drop()函数删除指定列。
df_table_all = df_table_all.dropna(axis=1,how='all') 使用dropna()函数删除全为NaN的列。
columns = df_table_all.columns 获取DataFrame的列名。
imr = Imputer(missing_values='NaN', strategy='mean', axis=0) 创建Imputer对象,用于填充NaN值。missing_values参数指定需要填充的值,strategy参数指定填充方法,axis参数指定填充方向。
df_table_all = pd.DataFrame(imr.fit_transform(df_table_all.values)) 使用fit_transform()函数填充NaN值,并将其转换为DataFrame格式。
df_table_all.columns = columns 将DataFrame的列名设置为原始列名。
df_table_all.to_csv("D:\python_pytharm\datasets\chapter3_data_handled\trainafter.csv") 使用to_csv()函数将处理后的数据保存为新的csv文件。
import numpy as np import pandas as pd import matplotlib. pyplot as plt from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from linear_model_03.closed_form_sol.LinearRegression_CFSol import LinearRegressionClosedFormSol # 数据2,读取数据,先进行数据转换 df = pd.read_table('../data/mpg.data', header=0) # data换成txt,即可转化txt格式 df.to_csv('../data/mpg.csv', index=False) mpg = pd. read_csv("../data/mpg.csv"). dropna() # ..表示上两级目录 X, y = np. asarray(mpg. loc[:, "horsepower"]), np. asarray(mpg. loc[:, "displacement"]) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, shuffle=True) lr_cfs = LinearRegressionClosedFormSol(fit_intercept=True, normalized=True) # 默认训练偏置项和进行标准化 lr_cfs.fit(X_train, y_train) # 训练模型 theta = lr_cfs.get_params() print(theta) y_test_pred = lr_cfs.predict(x_test=X_test) mse, r2, r2c = lr_cfs.cal_mse_r2(y_test, y_test_pred) print("均方误差:%.5f,判决系数:%.5f,修正判决系数:%.5f" % (mse, r2, r2c)) # lr_cfs. plt_predict(y_test, y_test_pred, is_sort=False) lr_cfs.plt_predict(y_test, y_test_pred, is_sort=True) plt. figure(figsize=(7,5)) plt. plot(X_test, y_test, "ro", label="Test Samples") plt. plot(X_test, y_test_pred, "k-", lw=1.5, label="Fit Model") plt. legend(frameon=False) plt. show()
在你的代码中,第一行和第二行之间需要添加空格来分隔它们。此外,你导入的 LinearRegression_CFSol 模块没有提供,可能需要检查一下文件路径或者确保该文件存在。另外,你在读取 mpg 数据时,使用了 dropna() 函数删除了数据集中的缺失值,这可能会导致数据集变小,影响模型的学习效果。最后,lr_cfs. plt_predict() 这一行代码中似乎有一个多余的句点,需要去掉。下面是修改后的代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from linear_model_03.closed_form_sol.LinearRegression_CFSol import LinearRegressionClosedFormSol
# 数据2,读取数据,先进行数据转换
df = pd.read_table('../data/mpg.data', header=0)
# data换成txt,即可转化txt格式
df.to_csv('../data/mpg.csv', index=False)
mpg = pd.read_csv("../data/mpg.csv")
# 选择特征和目标变量
X, y = np.asarray(mpg.loc[:, "horsepower"]), np.asarray(mpg.loc[:, "displacement"])
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, shuffle=True)
# 训练模型
lr_cfs = LinearRegressionClosedFormSol(fit_intercept=True, normalized=True)
lr_cfs.fit(X_train, y_train)
theta = lr_cfs.get_params()
print(theta)
# 预测并计算模型评价指标
y_test_pred = lr_cfs.predict(x_test=X_test)
mse, r2, r2c = lr_cfs.cal_mse_r2(y_test, y_test_pred)
print("均方误差:%.5f,判决系数:%.5f,修正判决系数:%.5f" % (mse, r2, r2c))
# 可视化预测结果
lr_cfs.plt_predict(y_test, y_test_pred, is_sort=False)
lr_cfs.plt_predict(y_test, y_test_pred, is_sort=True)
plt.figure(figsize=(7,5))
plt.plot(X_test, y_test, "ro", label="Test Samples")
plt.plot(X_test, y_test_pred, "k-", lw=1.5, label="Fit Model")
plt.legend(frameon=False)
plt.show()
相关推荐

















