python sklearn 机器学习(1)
一、任务要求:
任务一:药品销量预测
【任务说明】
现有一医疗机构多年来的药品销售数据,基于该数据,选择合适
的算法训练模型,并对该机构的药品销量进行预测。
【任务要求】
1.读取药品销售数据;
2.提取合适的特征;
3.对数据进行编码等预处理;
4.划分训练集和测试集;
5.构建机器学习模型;
6.编写模型训练相关代码,完成模型训练;
7.将训练好的模型进行保存;
8.使用模型进行预测。
二、代码部分:
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
import joblibdata = pd.read_csv('药品销售数据.csv')
data['销售日期'] = pd.to_datetime(data['销售日期'])
data['年份'] = data['销售日期'].dt.year
data['月份'] = data['销售日期'].dt.month
data['药品编码_药品名称'] = data['商品编码'] + '_' + data['商品名称']
features = ['药品编码_药品名称', '年份', '月份']
target = '销售数量'
x = data[features]
y = data[target]label_encoder = LabelEncoder()
x.loc[:, '药品编码_药品名称'] = label_encoder.fit_transform(x['药品编码_药品名称'])# 划分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(x_train, y_train)
train_score = model.score(x_train, y_train)
test_score = model.score(x_test, y_test)
print(f"训练集得分:{train_score:.2f}")
print(f"测试集得分:{test_score:.2f}")# 保存模型
joblib.dump(model, 'model.pkl')
joblib.dump(label_encoder, 'label.pkl')# 读取模型
loaded_model = joblib.load('model.pkl')
loaded_label = joblib.load('label.pkl')new_data = pd.DataFrame({'药品编码_药品名称': ['P00007_商品名称17', 'P00003_商品名称3', ],'年份': [2013, 2013],'月份': [3, 4],
})# 预测
new_data['药品编码_药品名称'] = loaded_label.transform(new_data['药品编码_药品名称'])
predictions = loaded_model.predict(new_data)
print(f"预测的销售数量:{predictions}")
print(f"预测的销售数量:{predictions[0]}")
print(f"预测的销售数量:{predictions[1]}")