帮我在原代码基础上优化一下
时间: 2024-03-14 16:46:47 浏览: 62
当然可以帮您优化代码,下面是在原代码基础上的优化版本:
```python
import pandas as pd
file = "计划及效能场地监控日报表 202306071026.xlsx"
df_effect = pd.read_excel(file)
# 应用样式
styled_effect = df_effect.style.set_properties(**{'text-align': 'center'})
# 将样式后的数据保存为 Excel 文件
styled_effect.to_excel(file, index=False)
print("完成清洗")
```
这里主要进行了以下优化:
1. 使用 "set_properties" 方法来设置样式,这样可以通过一次调用来设置多个样式属性。
2. 省略了样式函数的定义,使用了字典的方式来设置样式,这样代码更加简洁易懂。
希望这个优化后的代码可以满足您的需求。
相关问题
使用jupyter notebook完成代码1.线性回归最小二乘法、梯度下降法、岭回归对波士顿房价案例进行模型构建。2.对于广告案例,在原三个特征值的基础上,增加特征值test1与test2(随机数产生),并使用岭回归完成模型构建。
在Jupyter Notebook中完成这些任务需要先安装必要的库如`numpy`, `pandas`, `scikit-learn`等。我们将分步骤描述:
1. **线性回归(最小二乘法)**:
- 导入数据(例如使用`load_boston()`函数加载波士顿房价数据集)
- 数据预处理(拆分数据集为训练集和测试集)
- 创建LinearRegression模型,拟合数据
```python
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
boston = load_boston()
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target)
lr_model = LinearRegression()
lr_model.fit(X_train, y_train)
```
2. **梯度下降法**:
- 定义代价函数和梯度更新规则
- 迭代优化模型参数
```python
def gradient_descent(y, X, w, alpha):
m = len(y)
J = (1/(2*m)) * np.sum((y - np.dot(X, w))**2) # 代价函数
dw = -(1/m) * np.dot(X.T, (y - np.dot(X, w))) + alpha * w # 梯度
return J, dw
learning_rate = 0.01
w = np.zeros(X_train.shape[1])
for i in range(1000): # 遍历次数
J, dw = gradient_descent(y_train, X_train, w, learning_rate)
w += dw
```
3. **岭回归(Lasso Regression)**:
- 使用`Lasso`模型替换`LinearRegression`
```python
from sklearn.linear_model import Lasso
lasso_model = Lasso(alpha=0.1) # 设置正则化参数
lasso_model.fit(X_train, y_train)
```
4. **广告案例**:
- 对广告数据添加新特征test1和test2
```python
ad_data = pd.concat([boston.data, test1.reshape(-1, 1), test2.reshape(-1, 1)], axis=1)
X_ad = ad_data.drop('PRICE', axis=1) # 假设'PRICE'是目标变量
X_ad_train, X_ad_test, y_ad_train, _ = train_test_split(X_ad, boston.target, test_size=0.2)
lasso_ad_model = Lasso(alpha=0.1)
lasso_ad_model.fit(X_ad_train, y_ad_train)
```
给出一个完整的优化后的代码
由于优化代码需要具体环境和工具的支持,这里提供一个使用OpenMP库进行并行计算的示例,假设我们还在原代码基础上优化:
```cpp
#include <iostream>
#include <vector>
#include <omp.h>
// 假设histogramRed, histogramGreen, 和 histogramBlue 分别是大小为256的向量
std::vector<unsigned int> cumulativeHistogramRed(256);
std::vector<unsigned int> cumulativeHistogramGreen(256);
std::vector<unsigned int> cumulativeHistogramBlue(256);
void calculateCumulativeHistogram(const std::vector<unsigned char>& channelData) {
#pragma omp parallel for reduction(+:cumulativeHistogramRed[cumulativeHistogramRed.size() - 1], cumulativeHistogramGreen[cumulativeHistogramGreen.size() - 1], cumulativeHistogramBlue[cumulativeHistogramBlue.size() - 1])
for (int i = 0; i < 256; ++i) {
if (channelData[i]) { // 只有非零值才累加
cumulativeHistogramRed[i] += histogramRed[i];
cumulativeHistogramGreen[i] += histogramGreen[i];
cumulativeHistogramBlue[i] += histogramBlue[i];
}
}
}
// 原始直方图数据
std::vector<unsigned char> histogramRed;
std::vector<unsigned char> histogramGreen;
std::vector<unsigned char> histogramBlue;
int main() {
// 初始化直方图...
calculateCumulativeHistogram(histogramRed);
calculateCumulativeHistogram(histogramGreen);
calculateCumulativeHistogram(histogramBlue);
return 0;
}
```
在这个优化版本中,`#pragma omp parallel for` 使得计算过程可以在多个线程上并发执行,`reduction` 指令用于保证并行操作的累加结果一致性。注意这里是针对数组最后一个元素进行累加,因为之前的元素已经在之前迭代中完成累加。
阅读全文