机器学习中使用pandas处理数据的基本操作

最近由于在进行一个比赛项目,时常用到pandas读取数据,并对数据进行操作,因此写下这一篇博文,以便日后查看,同时也希望对大家有帮助。

加载数据(excel文件)

我现在数据,在一个excel文件中。

import pandas as pd
sensor1_data = pd.read_excel(sensor1)
sensor2_data = pd.read_excel(sensor2)
sensor20_data = pd.read_excel(sensor20)
sensor22_data = pd.read_excel(sensor22)

函数中的sensor1…都是excel文件路径
通过print(sensor1_data)可以得到如下所示信息。
数据的克斯话

合并四个传感器数据

四个传感器数据的结构都是一样的。

dataset = pd.concat([sensor1_data, sensor2_data, sensor20_data, sensor22_data])

这样会得到按行拼接的结果,默认axis=0

len(dataset)  # 全部样本的个数
2976

提取出对于标签的样本

通过loc函数获取导不同标签的数据。按照

label1_data = dataset.loc[dataset['标签'] == 1]
label2_data = dataset.loc[dataset['标签'] == 2]
label3_data = dataset.loc[dataset['标签'] == 3]
label4_data = dataset.loc[dataset['标签'] == 4]
label5_data = dataset.loc[dataset['标签'] == 5]
label6_data = dataset.loc[dataset['标签'] == 6]
label7_data = dataset.loc[dataset['标签'] == 7]

查看每个样本包含的样本个数

print(len(label1_data))
print(len(label2_data))
print(len(label3_data))
print(len(label4_data))
print(len(label5_data))
print(len(label6_data))
print(len(label7_data))
88
517
952
261
80
965
113

数据均衡处理

之所以需要处理数据均衡的问题,是为了训练模型,做7分类。
按照最少的样本提取每个标签的样本,为了保证随机性,将每个标签的样本随机打乱,其中frac=1代表将打乱后的数据全部返回。

data1 = label1_data.sample(frac=1)
data2 = label2_data.sample(frac=1)
data3 = label3_data.sample(frac=1)
data4 = label4_data.sample(frac=1)
data5 = label5_data.sample(frac=1)
data6 = label6_data.sample(frac=1)
data7 = label7_data.sample(frac=1)

每个标签的数据提取出80个样本

sample_num = 80

train_data1 = data1.iloc[0:sample_num]
train_data2 = data2.iloc[0:sample_num]
train_data3 = data3.iloc[0:sample_num]
train_data4 = data4.iloc[0:sample_num]
train_data5 = data5.iloc[0:sample_num]
train_data6 = data6.iloc[0:sample_num]
train_data7 = data7.iloc[0:sample_num]

显示一个标签的数据
在这里插入图片描述

制作训练集和测试集

train_dataset = pd.concat([train_data1, 
                           train_data2, 
                           train_data3, 
                           train_data4,
                          train_data5,
                          train_data6,
                          train_data7])
data_feature = train_dataset.iloc[:, [1, 2, 3, 5, 6, 8, 10 , 11]] # 样本
data_label = train_dataset.iloc[:, 12] # 样本的标签
from sklearn.model_selection  import train_test_split
x_train, x_test, y_train, y_test = train_test_split(data_feature, data_label, test_size=0.2)
len(x_train)
448

数据归一化处理

归一化范围为(0, 1)

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler(feature_range=(0, 1))
train_sample = scaler.fit_transform(x_train.values)
test_sample = scaler.fit_transform(x_test.values)

训练模型

  1. 导入SVM工具包
from sklearn.svm import SVC
svm = SVC(kernel='rbf', random_state=0, gamma=0.10, C=1.0)
  1. 训练
svm.fit(train_sample, y_train.values)  # 训练模型
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值