UM project
This commit is contained in:
commit
56dce9a205
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
env
|
1191
heart_problem.csv
Normal file
1191
heart_problem.csv
Normal file
File diff suppressed because it is too large
Load Diff
45
requirements.txt
Normal file
45
requirements.txt
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
absl-py==0.13.0
|
||||||
|
astunparse==1.6.3
|
||||||
|
cachetools==4.2.2
|
||||||
|
certifi==2021.5.30
|
||||||
|
chardet==4.0.0
|
||||||
|
flatbuffers==1.12
|
||||||
|
gast==0.4.0
|
||||||
|
google-auth==1.32.0
|
||||||
|
google-auth-oauthlib==0.4.4
|
||||||
|
google-pasta==0.2.0
|
||||||
|
grpcio==1.34.1
|
||||||
|
h5py==3.1.0
|
||||||
|
idna==2.10
|
||||||
|
joblib==1.0.1
|
||||||
|
Keras==2.4.3
|
||||||
|
keras-nightly==2.5.0.dev2021032900
|
||||||
|
Keras-Preprocessing==1.1.2
|
||||||
|
Markdown==3.3.4
|
||||||
|
numpy==1.19.5
|
||||||
|
oauthlib==3.1.1
|
||||||
|
opt-einsum==3.3.0
|
||||||
|
pandas==1.2.5
|
||||||
|
protobuf==3.17.3
|
||||||
|
pyasn1==0.4.8
|
||||||
|
pyasn1-modules==0.2.8
|
||||||
|
python-dateutil==2.8.1
|
||||||
|
pytz==2021.1
|
||||||
|
PyYAML==5.4.1
|
||||||
|
requests==2.25.1
|
||||||
|
requests-oauthlib==1.3.0
|
||||||
|
rsa==4.7.2
|
||||||
|
scikit-learn==0.24.2
|
||||||
|
scipy==1.7.0
|
||||||
|
six==1.15.0
|
||||||
|
tensorboard==2.5.0
|
||||||
|
tensorboard-data-server==0.6.1
|
||||||
|
tensorboard-plugin-wit==1.8.0
|
||||||
|
tensorflow==2.5.0
|
||||||
|
tensorflow-estimator==2.5.0
|
||||||
|
termcolor==1.1.0
|
||||||
|
threadpoolctl==2.1.0
|
||||||
|
typing-extensions==3.7.4.3
|
||||||
|
urllib3==1.26.6
|
||||||
|
Werkzeug==2.0.1
|
||||||
|
wrapt==1.12.1
|
116
script.py
Normal file
116
script.py
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
import pandas as pd
|
||||||
|
from keras.models import Sequential
|
||||||
|
from keras.layers import Dense
|
||||||
|
from keras.wrappers.scikit_learn import KerasClassifier
|
||||||
|
from sklearn import tree
|
||||||
|
from sklearn.preprocessing import MinMaxScaler
|
||||||
|
from sklearn.linear_model import SGDClassifier
|
||||||
|
from sklearn.pipeline import make_pipeline
|
||||||
|
from sklearn.model_selection import train_test_split
|
||||||
|
from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score
|
||||||
|
|
||||||
|
# Przewidywanie choroby serca na podstawie danych i wyników pacjenta.
|
||||||
|
|
||||||
|
data = pd.read_csv("./heart_problem.csv")
|
||||||
|
|
||||||
|
# Usunięcie wierszy z pustymi wartościami
|
||||||
|
|
||||||
|
data.dropna(inplace=True)
|
||||||
|
|
||||||
|
# Usuń wartości odstające.
|
||||||
|
indexes = data[(data['cholesterol'] == 0) | (data['resting bp s'] == 0)].index
|
||||||
|
data.drop(indexes , inplace=True)
|
||||||
|
|
||||||
|
# Skalowanie danych
|
||||||
|
scaler = MinMaxScaler()
|
||||||
|
X = data[['age','sex','resting bp s','cholesterol','fasting blood sugar', 'max heart rate']].to_numpy()
|
||||||
|
Y = data['target'].to_numpy()
|
||||||
|
X = scaler.fit_transform(X)
|
||||||
|
|
||||||
|
# Podział na zbiór trenujący/testowy
|
||||||
|
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2)
|
||||||
|
|
||||||
|
print(X_train.shape)
|
||||||
|
print(X_test.shape)
|
||||||
|
|
||||||
|
neural_accuracy = None
|
||||||
|
neural_fscore = None
|
||||||
|
neural_precision = None
|
||||||
|
neural_recall = None
|
||||||
|
|
||||||
|
sgd_accuracy = None
|
||||||
|
sgd_fscore = None
|
||||||
|
sgd_precision = None
|
||||||
|
sgd_recall = None
|
||||||
|
|
||||||
|
tree_accuracy = None
|
||||||
|
tree_fscore = None
|
||||||
|
tree_precision = None
|
||||||
|
tree_recall = None
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
# Klasyfikacja ma/nie ma chorobę serca na podstawie modelu sieci neuronowej.
|
||||||
|
def classificator_model():
|
||||||
|
model = Sequential()
|
||||||
|
model.add(Dense(8, input_dim=6, activation='relu'))
|
||||||
|
model.add(Dense(2, activation='softmax'))
|
||||||
|
model.compile(loss='categorical_crossentropy', optimizer='adam')
|
||||||
|
return model
|
||||||
|
|
||||||
|
# Trenowanie modelu
|
||||||
|
estimator = KerasClassifier(build_fn=classificator_model, epochs=5, batch_size=10, verbose=0)
|
||||||
|
estimator.fit(X_train, y_train)
|
||||||
|
predicts = estimator.predict(X_test)
|
||||||
|
neural_accuracy = accuracy_score(y_test, predicts)
|
||||||
|
neural_fscore = f1_score(y_test, predicts)
|
||||||
|
neural_precision = precision_score(y_test, predicts)
|
||||||
|
neural_recall = recall_score(y_test, predicts)
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
# Klasyfikacja ma/nie ma chorobę serca na podstawie klasyfikatora SGD.
|
||||||
|
|
||||||
|
model = SGDClassifier(max_iter=1000)
|
||||||
|
model.fit(X_train, y_train)
|
||||||
|
predicts = model.predict(X_test)
|
||||||
|
sgd_accuracy = accuracy_score(y_test, predicts)
|
||||||
|
sgd_fscore = f1_score(y_test, predicts)
|
||||||
|
sgd_precision = precision_score(y_test, predicts)
|
||||||
|
sgd_recall = recall_score(y_test, predicts)
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
# Klasyfikacja ma/nie ma chorobę serca na podstawie drzew decyzyjnych.
|
||||||
|
|
||||||
|
model = tree.DecisionTreeClassifier()
|
||||||
|
model.fit(X_train, y_train)
|
||||||
|
predicts = model.predict(X_test)
|
||||||
|
tree_accuracy = accuracy_score(y_test, predicts)
|
||||||
|
tree_fscore = f1_score(y_test, predicts)
|
||||||
|
tree_precision = precision_score(y_test, predicts)
|
||||||
|
tree_recall = recall_score(y_test, predicts)
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
print(f'''
|
||||||
|
Sieć neuronowa:
|
||||||
|
_____________________________
|
||||||
|
Accuracy: {neural_accuracy}
|
||||||
|
Precision: {neural_precision}
|
||||||
|
Recall: {neural_recall}
|
||||||
|
F-score: {neural_fscore}
|
||||||
|
|
||||||
|
Klasyfikator SGD:
|
||||||
|
_____________________________
|
||||||
|
Accuracy: {sgd_accuracy}
|
||||||
|
Precision: {sgd_precision}
|
||||||
|
Recall: {sgd_recall}
|
||||||
|
F-score: {sgd_fscore}
|
||||||
|
|
||||||
|
Drzewa decyzyjne:
|
||||||
|
_____________________________
|
||||||
|
Accuracy: {tree_accuracy}
|
||||||
|
Precision: {tree_precision}
|
||||||
|
Recall: {tree_recall}
|
||||||
|
F-score: {tree_fscore}
|
||||||
|
''')
|
||||||
|
|
Loading…
Reference in New Issue
Block a user