Обеспечение чистой водой играет решающую роль для здоровья населения. Загрязненная вода и плохие санитарные условия связаны с передачей таких заболеваний, как холера, диарея, дизентерия, гепатит А, брюшной тиф и полиомиелит. Выяснив, пригодна ли вода для питья, можно решить множество проблем. Поэтому я хотел выяснить, можем ли мы построить модель для классификации того, является ли вода пригодной для питья или нет с учетом конкретных свойств. Я использовал набор данных Качество воды от Kaggle.

Набор данных

Набор данных состоит из 9 столбцов в качестве объектов и 1 столбец обозначен как метка.

  1. ph: pH 1. воды (от 0 до 14).
  2. Жесткость: способность воды осаждать мыло в мг/л.
  3. Твердые вещества: общее количество растворенных твердых веществ в частях на миллион.
  4. Хлорамины: количество хлораминов в частях на миллион.
  5. Сульфат: количество растворенных сульфатов в мг/л.
  6. Электропроводность: электропроводность воды в мкСм/см.
  7. Органический_углерод: количество органического углерода в частях на миллион.
  8. Тригалометаны: количество тригалометанов в мкг/л.
  9. Мутность: мера светоизлучающей способности воды в NTU.
  10. Питьевая пригодность: указывает, безопасна ли вода для употребления человеком. Питьевой — 1 и Непитьевой — 0

Библиотеки

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import style
# Preprocessing
#import missingno as msno
from sklearn.preprocessing import StandardScaler, binarize
# Model Selection
from sklearn.model_selection import train_test_split, cross_val_score, KFold
# Models
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
# Metrics
from sklearn.metrics import confusion_matrix, classification_report, roc_auc_score, roc_curve, accuracy_score
import warnings
warnings.filterwarnings('ignore')  # supress warnings
%matplotlib inline

Исследование данных

Набор данных содержит показатели качества воды для 3276 различных водоемов.

61% проб воды помечены как питьевые, тогда как 39% из них пригодны для питья.

Глядя на матрицу диаграммы рассеяния, мы можем сказать, что корреляция между функциями очень мала.

Вменение

Изучив набор данных, я хотел найти и заполнить пустые ячейки, используя правильные методы.

Я обнаружил, что столбцы ph, сульфат и тригалометаны содержат пустые значения.

После анализа их графиков распределения я решил использовать средние значения, потому что все три столбца имели нормальное распределение.

Классификатор дерева решений

Классификатор дерева решений дал точность 0,59 и точность 0,59.

Случайный лесной классификатор

Классификатор случайного леса дал точность 0,67 и точность 0,68.

Машина опорных векторов

Метод опорных векторов дал точность 0,68 и точность 0,68, что является самым высоким результатом среди методов, которые я использовал в этом исследовании.

K-ближайшие соседи

Классификатор дерева решений дал точность 0,60 и точность 0,58.