import numpy import numpy as np import tensorflow as tf import matplotlib.pyplot as plt import os import cv2 as cv from sklearn.model_selection import train_test_split def getImgeAndLabels(path): #存放训练图片 facesSamples = [] #存放图片id ids = [] #存放路径和名称 imagPaths = [] for f in os.listdir(path): #连接文件夹路径和图片名称 result = os.path.join(path,f) #存入 imagPaths.append(result) face_detector = cv.CascadeClassifier(r'D:\pyh\envs\OpenCV\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml') for imagPath in imagPaths: #读取每一种图片 img = cv.imread(imagPath) PIL_img = cv.cvtColor(img,cv.COLOR_BGR2GRAY) #获取每张图片的id 利用os.path.split的方法将路径和名称分割开 id = int(os.path.split(imagPath)[1].split('.')[0]) facesSamples.append(PIL_img) ids.append(id) return facesSamples,ids if __name__ == '__main__': path = './data/' faces,ids = getImgeAndLabels(path) x = np.array(faces,dtype = np.uint8) y = np.array(ids,dtype = np.uint8) x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=0) model = tf.keras.models.Sequential([ tf.keras.layers.Input(shape=(112, 92)), #拉平转化为一维数据 tf.keras.layers.Flatten(input_shape=(112,92)), #定义神经网络全连接层,参数是神经元个数以及使用激活函数 tf.keras.layers.Dense(200,activation='relu'), #设置遗忘率 # tf.keras.layers.Dropout(0.2), #定义最终输出(输出10种类别,softmax实现分类的概率分布) tf.keras.layers.Dense(16,activation='softmax') ]) model.compile( optimizer = 'adam', loss = 'sparse_categorical_crossentropy', metrics = ['accuracy']) print("模型*************") model.fit(x,y,epochs=80) print("成绩***********") model.evaluate(x_test,y_test) class_name = ['u1','u2','u3', 'u4','u5','u6','u7','u8','u9','u10','u11','u12','u13',] predata = cv.imread(r'./data/5.pgm') predata = cv.cvtColor(predata, cv.COLOR_RGB2GRAY) reshaped_data = np.reshape(predata, (1, 112, 92)) #预测一个10以内的数组,他们代表对10种不同服装的可信度 predictions_single = model.predict(reshaped_data) max = numpy.argmax(predictions_single) #在列表中找到最大值 print(class_name[max-1]) plt.imshow(x_test[10],cmap=plt.cm.gray_r) plt.show()
时间: 2024-04-04 18:32:33 浏览: 118
这段代码是一个人脸识别的模型,使用了 TensorFlow 和 OpenCV 库。首先通过 getImgeAndLabels 函数获取训练数据集,然后使用 train_test_split 函数将数据集分成训练集和测试集。接着使用 Sequential 模型定义了一个神经网络模型,包含了一个输入层、一个全连接层和一个输出层,其中激活函数采用了 relu 和 softmax。使用 compile 函数对模型进行编译,指定了优化器、损失函数和评价指标。然后使用 fit 函数对模型进行训练,使用 evaluate 函数对模型进行测试。最后使用预测函数 predict 进行预测并输出结果。
相关问题
import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn import metrics import matplotlib.pyplot as plt
这段代码导入了 pandas、numpy、scikit-learn 和 matplotlib.pyplot 库中的一些常用模块和函数。
- `import pandas as pd` 导入了 pandas 库,并将其重命名为 pd,用于数据处理和分析。
- `import numpy as np` 导入了 numpy 库,并将其重命名为 np,用于数值计算和数组操作。
- `from sklearn.model_selection import train_test_split` 导入了 scikit-learn 库中的 train_test_split 函数,用于将数据集拆分为训练集和测试集。
- `from sklearn.linear_model import LogisticRegression` 导入了 scikit-learn 库中的逻辑回归模型(LogisticRegression),用于进行分类任务。
- `from sklearn import metrics` 导入了 scikit-learn 库中的 metrics 模块,用于评估模型性能。
- `import matplotlib.pyplot as plt` 导入了 matplotlib 库中的 pyplot 模块,并将其重命名为 plt,用于绘制数据可视化图形。
这段代码的目的是导入所需的库和模块,以便在后续的代码中使用它们进行数据处理、模型训练和评估以及结果可视化等操作。
import pandas as pd # Pandas 导入表格需要用到 import numpy as np # Numpy (version : 1.19.2) 进行数值运算或者矩阵运算 import matplotlib.pyplot as plt # Matplotlib 绘图包,也可以采用seaborn from sklearn.cluster import KMeans # Scikit Learn 机器学习聚类软件包,可以直接进行聚类。续写这段代码,对导入的csv文件进行列的描述统计性分析,csv文件共5列200行,第一列为客户编号,第二列为客户性别,第三列为客户年龄,第四列为客户年收入,第五列为客户年支出
假设我们已经将csv文件导入到名为"df"的Pandas数据框中,下面是对各列进行描述统计性分析的代码:
```
# 对客户年龄、年收入、年支出进行描述统计性分析
print(df[['客户年龄', '客户年收入', '客户年支出']].describe())
# 对客户性别进行计数
print(df['客户性别'].value_counts())
```
以上代码会输出每列数据的统计性描述,包括计数、均值、标准差、最小值、25%分位数、中位数、75%分位数和最大值。同时,它还会输出客户性别的计数,以便对客户群体进行更深入的分析。
阅读全文