RMarK0

ML задание 4

May 18th, 2021
549
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import pandas as pd
  2. from sklearn.ensemble import ExtraTreesClassifier
  3.  
  4. # МЕТОД ПОИСКА С АДАПТАЦИЕЙ
  5. dataset_array = pd.read_csv(
  6.     'dataset3.csv',
  7.     delimiter=',',
  8.     names=['NameOfUser', 'Q1', 'Q2',
  9.            'Q3', 'Q4', 'Q5', 'Q6', 'Q7', 'Q8',
  10.            'Q9', 'Q10', 'Q11', 'Q12', 'Q13']
  11. )
  12.  
  13. print(dataset_array)
  14. dataset_array['average'] = dataset_array.iloc[:, 12:].astype(float).mean(axis=1) # добавление нового столбца с
  15.                                                                                  # средними значениями для каждого чела
  16. dataset_array['R'] = [1 if x > 0.85 else 2 if 0.6 <= x <= 0.85 else 3 if 0.3 <= x <= 0.6 else 4 for x in dataset_array['average']]
  17.                 # добавление столбца с классификатором.
  18.                 # 1 - талант, 2 - хороший творч. потенц., 3 - есть задатки, 4 - нет творч. потенц.
  19. print(dataset_array)
  20.  
  21. # раздаем каждому признаку коэф. важности
  22. dataset_values = dataset_array.values
  23. X, Y = dataset_values[:, 1:11], dataset_values[:, 15] # берем Q от 1 до 10
  24. Y = Y.astype('int')                 # целевое значение, чем ближе к average, тем выше коэф. важности у каждого Q
  25. model = ExtraTreesClassifier()      # строим лес
  26. model.fit(X, Y)                    
  27. ratingArray = model.feature_importances_ # раздаем коэф. важности
  28. ratingArray = list(ratingArray)          # на выходе имеем массив ratingArray с коэф. важности для каждого Q
  29. print(ratingArray)
  30.  
  31. # удаление признаков с коэф. важности < limit
  32. k = 1
  33. limit = 0.08           # задаем лимит коэф. важности
  34.  
  35. for x in ratingArray:  # проверяем рейтинг каждого Q (Q1, Q2, Q3, ...)
  36.     if x < limit:
  37.         min = x
  38.         min_index = ratingArray.index(min) + k
  39.         print(dataset_array.columns[min_index])
  40.         dataset_array, k = dataset_array.drop(dataset_array.columns[min_index], axis=1), k-1 # удаляем столбец, уменьшаем k на 1
  41.  
  42. dataset_array.to_csv('dataset4.csv', index=False) # сохраняем в csv
  43. print(dataset_array)
  44.  
  45. with open('finish.txt', 'w') as outfile: # сохраняем в txt
  46.     dataset_array.to_string(outfile, columns=dataset_array.columns)
RAW Paste Data