0
votes

Scikit LogisticRressionComment ne pas prédire avec précision

J'ai un ensemble de données générées décrivant des connexions Web dans CSV qui ressemble à ceci: xxx pré>

complet CSV ICI P>

La classe indique lesquelles sont des intérêts basés sur la durée, la destination_id et le code de réponse. P>

Je pense que la logisticregression serait une bonne ajustement ici, mais les résultats que je deviennent ne sont pas géniaux. Sur le jeu de données généré, j'ai 750 rangées avec une classe 0 et 150 avec un 1. p>

Voici comment je manipule et fournisse les données: p>

names = ['conn_duration', 'conn_destination', 'response_size', 'response_code', 'is_malicious']
dataframe = pandas.read_csv(path, names=names)
array = dataframe.values

# separate array into input and output components
X = array[:,0:4]
y = array[:,4]

scaler = Normalizer().fit(X)
normalizedX = scaler.transform(X)

# summarize transformed data
numpy.set_printoptions(precision=3)
print(normalizedX[0:5,:])

model = LogisticRegression()
model.fit(X, y)

# Two test bits of data, expect the first to be predicted 1 and the second to be 0
Xnew = [[[3492, 150, 750, 200]], [[3492, 120, 901, 200]]]

for conn in Xnew:
    # make a prediction
    ynew = model.predict(conn)
    print("X=%s, Predicted=%s" % (conn[0], ynew[0]))


0 commentaires

3 Réponses :


1
votes

Si le code fonctionne, mais vous ne savez pas quel algorithme utiliser, je vous recommanderais d'essayer d'essayer une SVM, une forêt aléatoire, etc. Utilisez le GridSearchCV Module pour déterminer quel algorithme donne la meilleure performance.


0 commentaires

1
votes

Comme il y a une règle simple pour classer le trafic, car "le code de réponse est 200, Conn_Destination est de 150 et la taille de la réponse est supérieure à 500", vous n'avez pas besoin de modèle pour le résoudre. N'expliquez pas un problème simple.

Pour étudier des fins, c'est bon, mais le modèle devrait être très proche de 100% car il devrait apprendre cette règle.

Quoi qu'il en soit, Conn_Destination et Response_code sont des données catégoriques, si vous normalisez directement cela, l'algorith sera plus proche de 201 puis à 300, mais ils sont des catégories non de chiffres.

Voici une référence de quelque manière que certaines façons de menacer des données catégoriques: Régression linéaire Analyse avec des caractéristiques de chaîne / catégorique (variables)?


0 commentaires

1
votes

J'essaierais XGboost (gradient extrêmes des arbres boostés). Dans les grands magasins de données SVM, SVM est coûteux et je ressemble spécialement des forêts aléatoires lorsque vous avez un jeu de données hautement déséquilibré.

La régression logistique peut faire partie d'un réseau de neurones, si vous souhaitez développer quelque chose de plus précis et sophistiqué, comme le réglage des hyperparamètres, en évitant les propriétés de survêtement et d'augmentation de la généralisation. Vous pouvez également le faire dans XGoost, en élagant des arbres.

XGoost et réseaux de neurones seraient mes choix pour un problème de classification. Mais tout cela est plus grand que ça. Il ne s'agit pas de choisir un algorithme, mais de comprendre comment cela fonctionne, que se passe-t-il sous le capot et comment vous pouvez l'ajuster d'une manière que vous pouvez prédire avec précision les cours.

De plus, la préparation des données, la sélection variable, la détection des impératifs, les statistiques descriptives sont très importantes pour la qualité et la précision de votre modèle.


0 commentaires