我创建了一个 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)
`