解答问题3,给出代码,数据列包括,月份,日期,时间,故障类别,推出状态,推出累计数 抓取状态 抓取累计数 安装状态 安装累计数 检测状态 检测累计数 合格产品累计数 不合格产品累计数
时间: 2024-12-04 09:23:54 浏览: 5
### 任务3:生产线影响因素分析
#### 目标
根据生产线数据,应用数据分析方法分析影响产品合格率和生产线产量的可能因素。
#### 数据准备
假设我们有两个CSV文件 `M101.csv` 和 `M102.csv`,每个文件包含以下列:
- 月份
- 日期
- 时间
- 故障类别
- 推出状态
- 推出累计数
- 抓取状态
- 抓取累计数
- 安装状态
- 安装累计数
- 检测状态
- 检测累计数
- 合格产品累计数
- 不合格产品累计数
#### 代码实现
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
# 读取数据
m101 = pd.read_csv('M101.csv')
m102 = pd.read_csv('M102.csv')
# 合并数据
data = pd.concat([m101, m102], ignore_index=True)
# 数据预处理
data['日期'] = pd.to_datetime(data[['月份', '日期']].assign(DAY=1)).dt.date
data['时间'] = pd.to_datetime(data['时间'], format='%H:%M:%S').dt.time
data['总产品数'] = data['合格产品累计数'] + data['不合格产品累计数']
# 特征选择
features = ['月份', '日期', '故障类别', '推出状态', '推出累计数', '抓取状态', '抓取累计数',
'安装状态', '安装累计数', '检测状态', '检测累计数']
target = '合格产品累计数'
# 将分类变量转换为数值型
data = pd.get_dummies(data, columns=['故障类别', '推出状态', '抓取状态', '安装状态', '检测状态'])
# 训练集和测试集划分
X = data[features]
y = data[target]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估模型
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f'Mean Squared Error: {mse}')
print(f'R^2 Score: {r2}')
# 可视化重要特征
coefficients = pd.DataFrame({'Feature': X.columns, 'Coefficient': model.coef_})
coefficients = coefficients.sort_values(by='Coefficient', ascending=False)
plt.figure(figsize=(10, 6))
sns.barplot(x='Coefficient', y='Feature', data=coefficients)
plt.title('Feature Importance in Predicting Qualified Product Count')
plt.xlabel('Coefficient Value')
plt.ylabel('Feature')
plt.show()
# 影响因素分析
important_features = coefficients.head(10)['Feature'].tolist()
important_data = data[important_features + [target]]
# 相关性矩阵
correlation_matrix = important_data.corr()
plt.figure(figsize=(12, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', linewidths=0.5)
plt.title('Correlation Matrix of Important Features and Target')
plt.show()
# 输出重要特征及其系数
print(coefficients.head(10))
```
#### 解释
1. **数据读取和合并**:读取两个CSV文件并将它们合并成一个DataFrame。
2. **数据预处理**:将日期和时间转换为适当的格式,并计算总产品数。
3. **特征选择**:选择与产品合格率相关的特征,并将分类变量转换为数值型。
4. **训练集和测试集划分**:将数据分为训练集和测试集。
5. **线性回归模型**:使用线性回归模型进行训练,并预测测试集的数据。
6. **模型评估**:计算均方误差(MSE)和决定系数(R²)来评估模型性能。
7. **可视化重要特征**:绘制特征的重要性条形图,展示哪些特征对预测合格产品数的影响最大。
8. **相关性矩阵**:绘制重要特征之间的相关性矩阵,进一步分析特征之间的关系。
通过以上步骤,可以识别出影响产品合格率和生产线产量的关键因素,并为进一步优化生产线提供数据支持。
阅读全文