import argparse import numpy as np import pandas as pd from sklearn import model_selection from sklearn import preprocessing from sklearn import linear_model from sklearn import metrics import joblib from config import * def train(x_train, x_test, y_train, y_test): estimator = linear_model.Ridge() estimator.fit(x_train, y_train) print('梯度下降的权重系数是:', estimator.coef_) print('梯度下降的偏置是:', estimator.intercept_) joblib.dump(estimator, model_save_path) y_predict = estimator.predict(x_test) err = metrics.mean_squared_error(y_test, y_predict) print('梯度下降的误差率为:', err) def pred(x): estimator = joblib.load(model_save_path) x= np.array(x) predict = estimator.predict(x.reshape((x.shape[0], 1))) return predict def main(): parser = argparse.ArgumentParser(description='Demo of argparse') parser.add_argument('--method', type=str, default='train') args = parser.parse_args() method = args.method if method == 'train': df = pd.read_excel(file_name, dtype={ '年份': int, '值': float }) x = df['年份'].to_numpy() x = x.reshape((x.shape[0], 1)) y = df['值'].to_numpy() x_train, x_test, y_train, y_test=model_selection.train_test_split(x, y) train(x_train, x_test, y_train, y_test) elif method == 'test': predict = pred(pred_year).round(2) df = pd.DataFrame({ '预测年份': pred_year, '预测结果(单位:万吨)': predict }) print(df) df.to_excel(save_pred_path, index=False) else: print('wrong') if __name__ == '__main__': main()
时间: 2024-02-19 10:59:39 浏览: 146
这段 Python 代码主要实现了一个基于 Ridge 回归模型的数据训练和预测程序。具体来说,代码分为以下几个部分:
1. 导入需要的库和模块,包括 argparse、numpy、pandas、scikit-learn 和 joblib。
2. 实现一个 train 函数,用于训练 Ridge 模型。该函数接收训练集和测试集的特征和标签数据,通过 scikit-learn 库中的 Ridge 类进行模型训练,输出模型的权重系数、偏置和误差率,并将训练好的模型保存到指定路径。
3. 实现一个 pred 函数,用于对给定的年份进行预测。该函数接收一个年份数组,从指定路径加载已经训练好的 Ridge 模型,对年份数组进行预测,并返回预测结果。
4. 实现一个 main 函数,用于控制整个程序的流程。该函数通过 argparse 模块解析命令行参数,从而决定程序要进行的操作类型。如果是训练操作,就从指定路径的 Excel 文件中读取数据,将年份和对应的值作为特征和标签,通过 train 函数进行训练。如果是预测操作,就调用 pred 函数进行预测,并将预测结果保存到指定路径的 Excel 文件中。如果命令行参数有误,则输出错误信息。
5. 在最后,通过 if __name__ == '__main__': 判断当前文件是否被作为模块导入,如果是,则不执行 main 函数,如果直接运行该文件,则执行 main 函数。
总的来说,这个程序使用 Ridge 回归模型对年份和对应的值进行训练,并且可以对未来的年份进行预测。
相关问题
import numpy as np import pandas import pandas as pd import matplotlib from sklearn import naive_bayes from sklearn.preprocessing import MinMaxScaler from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import normalize from sklearn.preprocessing import Binarizer from sklearn.impute import SimpleImputer from sklearn.preprocessing import OneHotEncoder import matplotlib.pyplot as plt from sklearn.metrics import roc_curve, auc from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import confusion_matrix matplotlib.rc("font", family='Microsoft YaHei') data=pd.read_csv(r'D:\杂货铺\机器学习\银行数据集.csv',header=None)
这段代码导入了一系列的Python库,包括NumPy、Pandas、Matplotlib、scikit-learn等。其中,NumPy是Python科学计算的核心库,Pandas是数据处理的重要库,Matplotlib是绘图库,scikit-learn是机器学习库。接下来,使用Pandas读取一个CSV文件,该文件路径为D:\杂货铺\机器学习\银行数据集.csv,文件没有列名,所以header参数设置为None。
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.svm import SVC from sklearn.metrics import classification_report from sklearn.metrics import confusion_matrix
这段代码是在 Python 中导入了一些常用的机器学习库和模块,包括 pandas、numpy、matplotlib、sklearn 等。其中:
- pandas 是 Python 中常用的数据分析库,可以用来读取和处理数据;
- numpy 是 Python 中常用的科学计算库,提供了数组、矩阵等数据结构和各种数学函数;
- matplotlib 是 Python 中常用的数据可视化库,可以用来绘制各种图表;
- sklearn 是 Python 中常用的机器学习库,提供了许多常用的机器学习算法和工具,比如数据预处理、模型选择、模型评估等。
这段代码中还导入了不同的机器学习算法,包括逻辑回归、决策树、K近邻和支持向量机等。最后还导入了一些评估指标,比如分类报告和混淆矩阵。
阅读全文