trytryhard

test2_sb

Feb 19th, 2023
624
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.67 KB | None | 0 0
  1. #Цель сделать предобработку(если требуется). Решить проблему с кодировкой.
  2. #провести аналитику данных, сделать некие выводы-гипотезы. Желательно использовать графики
  3.  
  4. import numpy
  5. import pandas
  6. from sklearn import linear_model
  7. from sklearn.preprocessing import LabelEncoder
  8. from sklearn.preprocessing import StandardScaler
  9. from sklearn.model_selection import train_test_split
  10. from sklearn.neighbors import KNeighborsClassifier
  11. from sklearn.metrics import accuracy_score
  12. import matplotlib.pyplot as pyplot
  13.  
  14. from datetime import datetime
  15. from pathlib import Path
  16.  
  17. csv_file = pandas.read_csv('/Users/aleksejtitov/Desktop/test/second/data.csv')
  18. #определение типов
  19. #print(csv_file.columns)
  20. #print(csv_file.dtypes)
  21.  
  22. #определение столбцов с пустыми значениями
  23. print(csv_file.columns[csv_file.isna().any()].tolist())
  24.  
  25. #удаление days_employed и purpose, тк заведомо шум
  26. csv_file.drop(['days_employed','purpose'], axis=1,inplace=True)
  27.  
  28. #КОДирование категориальных призаков (пол)
  29. gender=csv_file['gender']
  30. csv_file['gender'] = LabelEncoder().fit_transform(csv_file['gender'])
  31.  
  32. #категорировать по типу занятости
  33. csv_file=pandas.get_dummies(csv_file,columns=['income_type'])
  34.  
  35. #определение столбцов с пустыми значениями после приведения категоризации
  36. print(csv_file.columns[csv_file.isna().any()].tolist())
  37.  
  38. #заполним пустые ячейки
  39. #print(csv_file['total_income'].median())
  40. csv_file['total_income'] = csv_file['total_income'].fillna(csv_file['total_income'].median())
  41.  
  42. csv_file['total_income'].astype(numpy.int64,errors='ignore')
  43. csv_file['total_income']=pandas.to_numeric(csv_file['total_income'].round(), errors='coerce').astype('Int64')
  44.  
  45.  
  46.  
  47. result_txt = open(str(Path.cwd())+'/result.txt','w')
  48.  
  49. for n_neighbors in range (2,35):
  50.     result_txt.write('Neighbors='+str(n_neighbors))
  51.  
  52.     # гипотеза №1 влияет ли количество детей и возраст на наличие задолженности
  53.     hyp1=csv_file[['children','dob_years']].copy()
  54.     y1=csv_file[['debt']].copy()
  55.     train_hyp, val_hyp, train_y, val_y = train_test_split(hyp1,y1, test_size=0.25)
  56.     k1_neib=KNeighborsClassifier(n_neighbors)
  57.     k1_neib.fit(train_hyp,train_y)
  58.     predicted = k1_neib.predict(val_hyp)
  59.     result_txt.write(str(' 1:['+str(accuracy_score(predicted,val_y))+']'))
  60.  
  61.     # гипотеза №2 опираясь на возраст и гендер можно угадать детей
  62.     hyp2=csv_file[['dob_years','gender']].copy()
  63.     y2=csv_file[['children']].copy()
  64.     train_hyp, val_hyp, train_y, val_y = train_test_split(hyp2,y2, test_size=0.25)
  65.     k2_neib=KNeighborsClassifier(n_neighbors)
  66.     k2_neib.fit(train_hyp,train_y)
  67.     predicted = k2_neib.predict(val_hyp)
  68.     result_txt.write(str(' 2:['+str(accuracy_score(predicted,val_y))+']'))
  69.  
  70.     # гипотеза №5 влияет ли пол и количество детей на наличия задолженности
  71.     hyp5=csv_file[['gender','family_status_id']].copy()
  72.     y5=csv_file[['children',]].copy()
  73.     train_hyp, val_hyp, train_y, val_y = train_test_split(hyp5,y5, test_size=0.25)
  74.     k_neib5=KNeighborsClassifier(n_neighbors)
  75.     k_neib5.fit(train_hyp,train_y)
  76.     predicted = k_neib5.predict(val_hyp)
  77.     result_txt.write(str(' 5:['+str(accuracy_score(predicted,val_y))+']\n'))
  78.     print('loop',n_neighbors,'finished')
  79.  
Advertisement
Add Comment
Please, Sign In to add comment