2017-02-14 10 views
0

Я имею дело с Azure ML, и моя цель - посмотреть, что произойдет, если у меня есть фиксированное количество (в процентах) недостающих значений в моем наборе данных. Моей идеей могло бы быть: Начиная с набора данных (возьмите пример набора данных для взрослых), дублируйте исходный набор данных и вызовите его для соглашения X. Набор данных X будет содержать случайно отсутствующее значение в процентах от 20%. Как только у нас будет оригинальный набор данных и дублированный набор данных X, мы можем использовать алгоритм Neural Net, создать тренировочный и тестовый набор, а затем обучить эту нейронную сеть с помощью набора данных X на входе. То, что было бы интересно увидеть, - это глобальная ошибка. После того, как мы можем представить, чтобы расширить диапазон недостающих значений в наборе данных X. Начиная с 20%, после 40% и т. Д. ... Думаю, самая сложная часть состоит в дублировании исходного набора данных и поэтому создайте набор данных X с этим отсутствующим значения.Поместите фиксированное количество отсутствующих значений в набор данных - Azure ML

В каком виде я могу это сделать? Использование модулей в Azure ML или, возможно, R/Python-скриптах?

+0

Это не так сложно. Просто создайте список случайных чисел между 1 и длиной вашего фрейма данных для количества значений, составляющих 20% от набора, и сохраните его в переменной. Затем используйте их как ваш идентификатор строки, чтобы подставить вход в цикл for с логикой 'for (ro in 1: nrow (df)) {if (ro% in% random_list) {df $ datafield [ro] <- NA}} ' – sconfluentus

+0

это r ... кстати. Но то, что вам нужно сделать, - это научиться скрипту на каком-то языке и использовать логику для замены этих значений случайным образом созданных идентификаторов строк ... – sconfluentus

+0

@bethanyP Спасибо за ваш ответ. Он также работает, если у меня есть другой тип столбца? Я не знаю R-языка, а также концепция на самом деле не ясна ... извините! – Fraangel

ответ

0

Просто поделитесь своей идеей, пожалуйста, см. Пример кода &, как показано ниже.

import numpy as np 
import pandas as pd 

# Origin DataFrame 
df = pd.DataFrame(np.random.randn(6,4)) 

# Copy data via flatten data matrix as an array 
array = df.values.flatten() 

# insert missing data by percent 
# Define the percent of missing data 
percent = 0.2 
size = len(array) 
# generate a random list for indexing data which will be assigned NaN 
chosen = np.random.choice(size, int(size*percent)) 
array[chosen] = np.nan 

# Create a new DataFrame with missing data 
df2 = pd.DataFrame(np.reshape(array, (6,4))) 

Надеюсь, это поможет.