# 导入数据集 data = pd.read_csv("pima.csv") # 确定目标变量和特征变量 target_col = ["Outcome"] cat_cols = data.nunique()[data.nunique() < 12].keys().tolist() cat_cols = [x for x in cat_cols] # numerical columns num_cols = [x for x in data.columns if x not in cat_cols + target_col] # Binary columns with 2 values bin_cols = data.nunique()[data.nunique() == 2].keys().tolist() # Columns more than 2 values multi_cols = [i for i in cat_cols if i not in bin_cols] # Label encoding Binary columns le = LabelEncoder() for i in bin_cols: data[i] = le.fit_transform(data[i]) # Duplicating columns for multi value columns data = pd.get_dummies(data=data, columns=multi_cols) # Scaling Numerical columns std = StandardScaler() scaled = std.fit_transform(data[num_cols]) scaled = pd.DataFrame(scaled, columns=num_cols) # dropping original values merging scaled values for numerical columns df_data_og = data.copy() data = data.drop(columns=num_cols, axis=1) data = data.merge(scaled, left_index=True, right_index=True, how="left")
时间: 2024-04-26 22:25:26 浏览: 193
这段代码是用来对一个名为 "pima.csv" 的数据集进行数据预处理的,其中包含了以下步骤:
1. 载入数据集并确定目标变量和特征变量;
2. 将特征变量分为二分类特征、多分类特征和数值型特征三类;
3. 对二分类特征进行标签编码(将其转换为数字);
4. 对多分类特征进行独热编码(将其转换为多个二分类特征);
5. 对数值型特征进行标准化(使其均值为0,方差为1);
6. 将原始的特征变量删除,并将标准化后的数值型特征与编码后的特征变量合并。
这些步骤的目的是为了让数据集更加适合用于机器学习算法的训练和测试,从而提高模型的准确性和泛化能力。
相关问题
如何将其设置为中文import pandas as pd import seaborn as sns # 读取数据集 data = pd.read_csv('diabetes.csv') # 去除缺失值 data.dropna(inplace=True) # 标准化数据 data_norm = (data - data.mean()) / data.std() # 计算特征之间的相关系数矩阵 corr = data_norm.corr() # 使用Seaborn生成热力图,并显示数值 sns.heatmap(corr, cmap='YlGnBu', annot=True, fmt='.2f') # 设置图形参数 plt.title('Pima Dataset Correlation Heatmap') plt.xticks(rotation=45) plt.show()
要将热力图的标签设置为中文,可以使用Matplotlib库中的rcParams方法来设置字体。以下是修改后的代码:
```python
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib as mpl
# 设置中文字体
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文黑体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
# 读取数据集
data = pd.read_csv('diabetes.csv')
# 去除缺失值
data.dropna(inplace=True)
# 标准化数据
data_norm = (data - data.mean()) / data.std()
# 计算特征之间的相关系数矩阵
corr = data_norm.corr()
# 使用Seaborn生成热力图,并显示数值
sns.heatmap(corr, cmap='YlGnBu', annot=True, fmt='.2f')
# 设置图形参数
plt.title('皮马印第安人糖尿病数据集相关系数热力图')
plt.xticks(rotation=45)
plt.show()
```
在这个例子中,我们使用了Matplotlib的rcParams方法来设置字体,将字体设置为中文黑体SimHei,并且设置axes.unicode_minus为False,以解决负号显示为方块的问题。然后我们将热力图的标题设置为中文,并使用Matplotlib的show方法显示热力图。
练习 在皮马印第安人糖尿病数据集上比较logistic regression和naive bayesrian分类器的性能。diabetes = pd.read_csv('./work/diabetes.csv')
在Pima Indians Diabetes数据集上,Logistic Regression(逻辑回归)和Naive Bayes分类器常常用于预测二元分类问题,比如患者是否患有糖尿病。这个数据集包含了一些患者的生理指标,如年龄、血糖水平等,可以作为输入特征,目标变量则是诊断结果。
首先,你需要加载数据集:
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score, confusion_matrix
# 加载数据
diabetes = pd.read_csv('./work/diabetes.csv')
# 预处理数据(如:缺失值填充、编码分类变量)
X = diabetes.drop('Outcome', axis=1) # 特征
y = diabetes['Outcome'] # 目标变量
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练Logistic Regression模型
lr_classifier = LogisticRegression()
lr_classifier.fit(X_train, y_train)
# 使用Logistic Regression进行预测
y_pred_lr = lr_classifier.predict(X_test)
# 训练Naive Bayes模型
nb_classifier = GaussianNB()
nb_classifier.fit(X_train, y_train)
# Naive Bayes预测
y_pred_nb = nb_classifier.predict(X_test)
# 计算性能指标
accuracy_lr = accuracy_score(y_test, y_pred_lr)
cm_lr = confusion_matrix(y_test, y_pred_lr)
accuracy_nb = accuracy_score(y_test, y_pred_nb)
cm_nb = confusion_matrix(y_test, y_pred_nb)
# 比较两个模型的性能
print(f"Logistic Regression Accuracy: {accuracy_lr}, Confusion Matrix: \n{cm_lr}")
print(f"Naive Bayes Accuracy: {accuracy_nb}, Confusion Matrix: \n{cm_nb}")
阅读全文