-2

我创建了一个 ML 模型来测试密码强度。数据集有一个形状 (669639, 127),如果我通过密码/变量来测试模型,它会得到一个 ValueError,密码有 1 个功能,预期为 127。所以,我尝试将密码/变量重塑为 (1,127 ) 但它说不能将大小为 1 的数组重塑为 (1,127)。任何帮助将不胜感激,谢谢。`#!/usr/bin/env python

编码:utf-8

在[2]中:

import seaborn as sns
import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings('ignore')

在[3]中:

data = pd.read_csv('D:\Datasets\strength.csv',',', error_bad_lines=False)

在[4]中:

data

在[5]中:

data.isna().sum()

在[6]中:

data.dropna(inplace = True)

在[7]中:

data.isna().sum()

在[8]中:

sns.countplot(data['strength'])

在[9]:

data['strength'].value_counts()

在[10]:

password_tuple = np.array(data)

在[11]:

import random
random.shuffle(password_tuple)

在[12]中:

X = [labels[0] for labels in password_tuple]
y = [labels[1] for labels in password_tuple]

在[13]:

def char_tokenizer(input):
    characters = []
    for i in input:
        characters.append(i)
    return characters

在[14]:

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer(tokenizer = char_tokenizer)
X = tfidf.fit_transform(X)

在[15]中:

X.shape

在[16]中:

from sklearn.linear_model import LogisticRegression
logReg = LogisticRegression(penalty='l2',multi_class='ovr')
logReg.fit(X,y)

在[17]:

print(logReg.score(X,y))

在[18]:

import joblib
joblib.dump(logReg,'LogisticRegression_model.joblib')

在[17]:

from sklearn.naive_bayes import BernoulliNB
bnb = BernoulliNB()
bnb.fit(X,y)

在[18]:

print(bnb.score(X,y))

在[19]:

import joblib
joblib.dump(bnb,'NaiveBayes_model.joblib')

在[20]中:

from sklearn.tree import DecisionTreeClassifier
dtc = DecisionTreeClassifier()
dtc.fit(X,y)

在[21]:

print(dtc.score(X,y))

在[22]中:

import joblib
joblib.dump(logReg,'DecisionTree_model.joblib')

在[23]中:

from sklearn.ensemble import RandomForestClassifier
rfc = RandomForestClassifier(n_estimators=100, max_depth=50, criterion='entropy')
rfc.fit(X,y)

在[24]中:

print(rfc.score(X,y))

在[25]中:

import joblib
joblib.dump(rfc,'RandomForest_model.joblib')

在[35]中:

array =['dbswjwiqmd']
ar2 = np.array([array])
ar2.reshape(1,127)
logReg.predict(ar2)

`

4

1 回答 1

0

我假设您的训练数据集有 127 列被提取为特征。要测试密码,您还需要应用特征提取方法。您需要从 1 个字符串/密码生成一个包含 127 列的向量。

于 2020-09-28T16:05:55.913 回答