Я читаю несколько файлов CSV в кадре данных. Каждый файл содержит несколько столбцов и строк данных, из которых я пытаюсь построить модель для классификации каждого файла в качестве целевой метки «1» или целевой метки «0».
Мне удалось сгруппировать столбцы по «файлу», и каждая функция содержит несколько значений. Я пытаюсь правильно разделить данные на обучающие и тестовые наборы, чтобы можно было построить модель SVM для прогнозирования правильной метки.
Каков будет хороший подход при построении модели с заданной структурой данных? Какой фрейм данных будет эффективнее использовать при попытке построить модель.
Я попытался выполнить индексирование по «файлу» с его характеристиками (% CPU) и целевыми значениями.
os.chdir("E:\Research Machine Learning\ComputerDebugging\\bugfree")
extension = 'csv'
all_files2 = [i for i in glob.glob('*.{}'.format(extension))]
df2 = pd.DataFrame(columns=["%CPU","PID",'TimeStamp',])
fields=["%CPU","PID",'TimeStamp']
files2 = []
for f in all_files2:
bugfree = pd.read_csv(f, header=0,usecols=fields,nrows=125)
bugfree.sort_values(by=['TimeStamp','PID'], inplace=True)
for i in range(bugfree.shape[0]):
files2.append(f)
df2 = df2.append(bugfree)
df2['target']=0
df2['file'] = files2
df2 = df2.drop(["PID","TimeStamp"], axis=1)
df2 = df2.set_index(['file','target']).stack()
первый кадр данных:
df3
%CPU target
finalprod1.csv [20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 50.0, 50.0, 50... 1
finalprod10.csv [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... 1
finalprod100.csv [33.3, 33.3, 0.0, 0.0, 33.3, 0.0, 16.7, 16.7, ... 1
finalprod11.csv [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... 1
finalprod12.csv [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 25.0, 25.... 1
finalprod13.csv [0.0, 0.0, 33.3, 0.0, 0.0, 0.0, 25.0, 50.0, 0.... 1
finalprod14.csv [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... 1
...
finalprodBF72.csv [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, ... 0
finalprodBF73.csv [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, ... 0
finalprodBF74.csv [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, ... 0
finalprodBF75.csv [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, ... 0
finalprodBF76.csv [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, ... 0
finalprodBF77.csv [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, ... 0
finalprodBF78.csv [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, ... 0
finalprodBF79.csv [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, ... 0
Я также построил фрейм данных с этой структурой в качестве альтернативы:
os.chdir("E:\Research Machine Learning\ComputerDebugging\\bugfree")
extension = 'csv'
all_files2 = [i for i in glob.glob('*.{}'.format(extension))]
df2 = pd.DataFrame(columns=["%CPU","PID",'TimeStamp',])
fields=["%CPU","PID",'TimeStamp']
files2 = []
for f in all_files2:
bugfree = pd.read_csv(f, header=0,usecols=fields,nrows=125)
bugfree.sort_values(by=['TimeStamp','PID'], inplace=True)
for i in range(bugfree.shape[0]):
files2.append(f)
df2 = df2.append(bugfree)
df2['target']=0
df2['file'] = files2
df2 = df2.drop(["PID","TimeStamp"], axis=1)
df2 = df2.set_index(['file','target']).stack()
2-й кадр данных:
file target
finalprod1.csv 1 %CPU 20.0
%CPU 0.0
%CPU 0.0
%CPU 0.0
%CPU 0.0
%CPU 0.0
...
finalprodBF99.csv 0 %CPU 25.0
%CPU 33.3
%CPU 0.0
%CPU 33.3
%CPU 33.3
%CPU 66.7
...
Я попытался построить модель с первым кадром данных:
X = df3['%CPU']
Y = df3['target']
X_train , X_test , Y_train , Y_test = train_test_split(X, Y,
#Split the Training and Test sets by 50% split
train_size=0.8,
test_size=0.2,
random_state=123)
from sklearn.svm import SVC
svc = SVC()
svc.fit(X_train, Y_train)
acc_svc = round(svc.score(X_train, Y_train) * 100, 2)
print("SVM",'\n')
print(acc_svc)
Я получаю это сообщение об ошибке, когда пытаюсь работать с первым кадром данных.
ValueError: setting an array element with a sequence.
Мне известно, что эта ошибка связана с тем фактом, что я ввел последовательность чисел в один слот, а sklearn это не нравится. Я не могу понять, как это исправить или реструктурировать структуру данных в приемлемую структуру.
Я не смог понять, как вписать 2-й кадр данных в какие-либо модели классификации.
Есть ли способ правильно подогнать любой из этих двух фреймов данных к модели SVM?