Prośba o pomoc w finalizacji oraz weryfikacji projektu

Prośba o pomoc w finalizacji oraz weryfikacji projektu
D8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 195
0

Czy moglibyście pomóc w finalizacji oraz weryfikacji projektu https://gitlab.portal.futurecollars.com/dariusz_jenek/trial-version/-/blob/main/NewVersionOfProject.py?

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
1

Co znaczy pomóc w finalizacji oraz weryfikacji? Jak masz jakiś problem to opisz i wklej kod. Wejście na link wymaga logowania.

D8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 195
0

Aktualny stan projektu

Kopiuj
# Importing packages
# Exploratory Data Analysis packages
import pandas as pd
import numpy as np
# Plotting packages
import matplotlib.pyplot as plt  # Zmiana z 'import matplotlib as plt' na 'import matplotlib.pyplot as plt'
#plt.use('Agg')  # To ustawienie, jeśli chcesz używać 'Agg' backend do rysowania w tle
import seaborn as sns
import pandas.testing as tm  # Zakomentowany, jeśli nie używasz
from pandas.plotting import scatter_matrix
# Machine Learning packages
from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score, silhouette_score, classification_report , confusion_matrix
from sklearn.decomposition import PCA
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.cluster import KMeans, AgglomerativeClustering, DBSCAN
import joblib
import pickle
from sklearn.tree import DecisionTreeClassifier 
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB

# Scientifical packages
import scipy.cluster.hierarchy as sch
from scipy import stats

#Graphical User Interface packages
import tkinter as tk

#Graphical packages


# Loading dataset
loan = pd.read_csv('loan_data.csv', low_memory=False)

print(loan.head())
print(loan.describe())

# Checking for any missing values
print(loan.isna().sum())

print(loan.keys())
print(loan.values)
print(loan.shape)
print(loan.groupby('loan_status').size())

# Exploratory Data Analysis

# Tworzenie wykresu typu boxplot dla wybranych kolumn
loan.plot(kind='box', subplots=True, layout=(12, 10), sharex=False, sharey=False)
# histograms using pandas plot
loan.hist()
plt.show()  # Prawidłowe wywołanie metody show na matplotlib.pyplot
# Multivariate Plots
# Relationships between each attribute
sns.pairplot(loan)

scatter_matrix(loan)
plt.show()

plt.figure(figsize =(20,10))
sns.heatmap(loan.corr(), annot =True)

sns.countplot(loan['loan_status'])

#Machine Learning Models
# Split-out validation dataset
array = loan.values
x = array[:,0:4]
y = array[:,4]
x
y
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=5)
x_train
y_train
x_test
y_test

#Logistic Model Regression

logistic_model = LogisticRegression(random_state = 0)
logistic_model.fit(x_train, y_train)

y_predict =logistic_model.predict(x_test)
y_predict

cm = confusion_matrix(y_test,y_predict)

print(classification_report(y_test,y_predict))

print("accuracy :" , logistic_model.score(x_test,y_test))

# Individual Prediction
#mysample = np.array([4.9,3.0,1.4,0.2])
#ex1 = mysample.reshape(1,-1)
#Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

#logistic_model.predict(ex1)

joblib.dump(logistic_model, 'logit_model_iris.pkl')


# save the model to disk
filename = 'finalized_model.sav'
pickle.dump(logistic_model, open(filename, 'wb'))

# some time later...

# load the model from disk
loaded_model = pickle.load(open(filename, 'rb'))
result = loaded_model.score(x_test, y_test)

ex2 = np.array([6.2,3.4,5.4,2.3]).reshape(1,-1)

logistic_model.predict(ex2)

#KNN, Decision Tree and SVM Models

knn = KNeighborsClassifier()
dtree = DecisionTreeClassifier()
svm = SVC() 

# Fit the model
knn_model = KNeighborsClassifier(n_neighbors = 5, metric = 'minkowski', p = 2)
knn_model.fit(x_train, y_train)
y_pred = knn.predict(x_test)
print("accuracy :" , knn.score(x_test,y_test))

k = 5

neigh6 = KNeighborsClassifier(n_neighbors = k).fit(x_train,y_train)

yhat6 = neigh6.predict(x_test)

#print("Train set Accuracy: ", metrics.accuracy_score(y_train, neigh6.predict(x_train)))
#print("Test set Accuracy: ", metrics.accuracy_score(y_test, yhat6))

Ks = 10
mean_acc = np.zeros((Ks-1))
std_acc = np.zeros((Ks-1))
ConfustionMx = [];
for n in range(1,Ks):
    
    #Train Model and Predict  
    neigh = KNeighborsClassifier(n_neighbors = n).fit(x_train,y_train)
    yhat=neigh.predict(x_test)
#    mean_acc[n-1] = metrics.accuracy_score(y_test, yhat)

    
    std_acc[n-1]=np.std(yhat==y_test)/np.sqrt(yhat.shape[0])

mean_acc

plt.plot(range(1,Ks),mean_acc,'g')
plt.fill_between(range(1,Ks),mean_acc - 1 * std_acc,mean_acc + 1 * std_acc, alpha=0.10)
plt.legend(('Accuracy ', '+/- 3xstd'))
plt.ylabel('Accuracy ')
plt.xlabel('Number of Nabors (K)')
plt.tight_layout()
plt.show()

print( "The best accuracy was with", mean_acc.max(), "with k=", mean_acc.argmax()+1)

k = 8

neigh6 = KNeighborsClassifier(n_neighbors = k).fit(x_train,y_train)

yhat6 = neigh6.predict(x_test)

#print("Train set Accuracy: ", metrics.accuracy_score(y_train, neigh6.predict(x_train)))
#print("Test set Accuracy: ", metrics.accuracy_score(y_test, yhat6))

# save the model to disk
joblib.dump(knn, 'knn_model_iris.pkl') 

dtree.fit(x_train, y_train)
print("accuracy :" , dtree.score(x_test,y_test))

# save the model to disk
joblib.dump(dtree, 'dtree_model_iris.pkl') 

svm.fit(x_train, y_train)
print("accuracy :" , svm.score(x_test,y_test))

# save the model to disk
joblib.dump(svm, 'svm_model_iris.pkl') 

Czy aktualny stan projektu ma jakikolwiek sens?

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
1

Jeśli dla Ciebe ma sens to OK, dla mnie nie ma żadnego, bo nie znam danych i nie wiem czemu model ma służyć. Jak chcesz coś więcej, to je udostępnij.

YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2384
0

Koledze zapewne chodzi o problem klasyfikacji dla zbioru danych IRIS -> https://www.kaggle.com/datasets/uciml/iris/data

Patrząc na ten kod, to jest to losowe copy&paste z ćwiczenia różnych modeli i kod coś tam realizuje, ale nie wiadomo po co i czy na temat.

@darek88 Pytania testowe:

  • dlaczego interesuje Cię accuracy, a nie np. f1-score albo recall?
  • co wynika z analizy eksploracyjnej? Ile masz klas, czy są zbalansowane?
  • dlaczego przy KNN używasz 5 sąsiadów i metryki Minkowskiego? Gdzie analiza krzywej łokciowej?
  • jaki cel ma realizować ten kod?

Równie dobrze, mógłbyś wziąć gotową bibliotekę, która ogarnie Ci wiele modeli klasyfikacji i wypluje ich porównanie. Będzie mniej kodu, np.
https://pypi.org/project/lazypredict/
https://pycaret.gitbook.io/docs#classification

D8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 195
0

Czy moglibyście udostępnić prywatne informacje kontaktowe? Przekazałbym Wam wtedy konkretną treść całego projektu.

D8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 195
0

@lion137 Czy analizowałeś już ten projekt?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.