python数据特征提取_训练数据的特征提取

创建两个数据帧(在第一个数据帧中,每个数据点的所有功能都相同,第二个数据帧是对第一个数据帧的修改,为某些数据点引入了不同的功能):import pandas as pd

import numpy as np

import random

import time

import itertools

# Create a DataFrame where all the keys for each datapoint in the "features" column are the same.

num = 300000

NAMES = ['John', 'Mark', 'David', 'George', 'Kevin']

AGES = [25, 21, 12, 11, 16]

FEATURES1 = ['Post Graduate', 'Under Graduate', 'High School']

FEATURES2 = ['Football Player', 'Cricketer', 'Carpenter', 'Driver']

LABELS = [1, 2, 3]

df = pd.DataFrame()

df.loc[:num, 0]= ["name={0};age={1};feature1={2};feature2={3}"\

.format(NAMES[np.random.randint(0, len(NAMES))],\

AGES[np.random.randint(0, len(AGES))],\

FEATURES1[np.random.randint(0, len(FEATURES1))],\

FEATURES2[np.random.randint(0, len(FEATURES2))]) for i in xrange(num)]

df['label'] = [LABELS[np.random.randint(0, len(LABELS))] for i in range(num)]

df.rename(columns={0:"features"}, inplace=True)

print df.head(20)

# Create a modified sample DataFrame from the previous one, where not all the keys are the same for each data point.

mod_df = df

random_positions1 = random.sample(xrange(10), 5)

random_positions2 = random.sample(xrange(11, 20), 5)

INTERESTS = ['Basketball', 'Golf', 'Rugby']

SMOKING = ['Yes', 'No']

mod_df.loc[random_positions1, 'features'] = ["name={0};age={1};interest={2}"\

.format(NAMES[np.random.randint(0, len(NAMES))],\

AGES[np.random.randint(0, len(AGES))],\

INTERESTS[np.random.randint(0, len(INTERESTS))]) for i in xrange(len(random_positions1))]

mod_df.loc[random_positions2, 'features'] = ["name={0};age={1};smoking={2}"\

.format(NAMES[np.random.randint(0, len(NAMES))],\

AGES[np.random.randint(0, len(AGES))],\

SMOKING[np.random.randint(0, len(SMOKING))]) for i in xrange(len(random_positions2))]

print mod_df.head(20)

假设原始数据存储在名为df的数据帧中。在

解决方案1(每个数据点的所有功能都相同)

^{pr2}$

编辑:您需要做的一件事就是相应地编辑columns列表。在

每个点的解决方案可能相同(或者每个特征都相同)import pandas as pd

import numpy as np

import time

import itertools

# The following functions are meant to extract the keys from each row, which are going to be used as columns.

def extract_key(x):

return x.split('=')[0]

def def_columns(x):

lista = x.split(';')

keys = [extract_key(i) for i in lista]

return keys

df = mod_df

columns = pd.Series(df.features.apply(def_columns)).tolist()

flattened_columns = list(itertools.chain(*columns))

flattened_columns = np.unique(np.array(flattened_columns)).tolist()

flattened_columns

# This function turns each row from the original dataframe into a dictionary.

def function(x):

lista = x.split(';')

dict_ = {}

for i in lista:

key, val = i.split('=')

dict_[key ] = val

return dict_

df.features.apply(function)

arr = pd.Series(df.features.apply(function)).tolist()

pd.DataFrame.from_dict(arr)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值