def mainpca(): unknowndata = UnknownData() # 未知数据产生聚类中心 unknowndata = fill(unknowndata, 1778, 336, 254) unknowndata = normalization(unknowndata, 1778, 336) U1, S1, V1 = pca(np.array(unknowndata, dtype='float'), 2) init_centroids = np.array(kpp_centers(U1, 2)) idx, centroids_all = runKmeans(U1, init_centroids, 100) centroids = centroids_all[-1] print("感知不明数据产生的聚类中心点:\n", centroids[0], centroids[1]) # plotData(U1, centroids_all, idx) # plt.savefig('F:\\导出的图片.png') # plt.show() problemdata = ProblemData() # 问题数据 problemdata = fill(problemdata, 2093, 336, 299) problemdata = normalization(problemdata, 2093, 336) U2, S2, V2 = pca(np.array(problemdata, dtype='float'), 2) # plt.scatter(U2[:, 0], U2[:, 1]) testdata = TestData() # 测试正确率的数据 testdata = fill(testdata, 476, 336, 68) testdata = normalization(testdata, 476, 336) U3, S3, V3 = pca(np.array(testdata, dtype='float'), 2) # plt.scatter(U3[:, 0], U3[:, 1],c='orange') # plt.show() # plt.subplot2grid((2,2),(0,0)) # plt.scatter(U2[:, 0], U2[:, 1]) # plt.subplot2grid((2,2),(0,1)) # plt.scatter(U3[:, 0], U3[:, 1],c='orange') # # plt.savefig('F:\\导出的图片1.png') # plt.subplot2grid((2,2),(1,0)) # plotData(U1, centroids_all, idx) # # plt.savefig('F:\\导出的图片3.png') # plt.show() # a = np.random.randint(0, 84) data_7, day, ECI, time, name = PredictData() # 做感知差识别的数据 data_7 = fill(data_7, 7, 336, 1) data_7 = normalization(data_7, 7, 336) U4, S4, V4 = pca(np.array(data_7, dtype='float'), 2) data_arg = U4[day] print("降维后的感知差识别数据:", data_arg[0], data_arg[1]) print("ECI:", ECI) print("time:", time) print("name:", name) T = U2 # 预测 P = U3 num1 = num2 = 0 num3 = num4 = 0 string1 = '该日数据存在感知差问题' string2 = '该日数据感知正常' for i in range(2093): if euler_distance(T[i], centroids[0]) <= euler_distance( T[i], centroids[1]): num1 += 1 else: num2 += 1 if num1 >= num2: print("感知差聚类中心点为:", centroids[0][0], centroids[0][1]) # centroids0为问题小区中心点 for i in range(476): if euler_distance(P[i], centroids[0]) <= euler_distance( P[i], centroids[1]): num3 += 1 print('预测准确度为:', '%.2f' % (100 * num3 / 476), '%') dis1 = euler_distance(data_arg, centroids[0]) dis2 = euler_distance(data_arg, centroids[1]) if dis1 < dis2: string = string1 print(string) else: string = string2 print(string) else: print("感知正常中心点为:", centroids[1][0], centroids[1][1]) # centroids1为问题小区中心点 for i in range(476): if euler_distance(P[i], centroids[0]) >= euler_distance( P[i], centroids[1]): num4 += 1 print('预测准确度为:', '%.2f' % (100 * num4 / 476), '%') dis1 = euler_distance(data_arg, centroids[0]) dis2 = euler_distance(data_arg, centroids[1]) if dis1 > dis2: string = string1 print(string) else: string = string2 print(string) return string, ECI, time, name
# model_file = 'net/net-5-2-78.15%/encode.ckpt' model_file = 'net/net-5-3-72.69%/encode.ckpt' # model_file = 'net/net-5-4-80.46%/encode.ckpt' # model_file = 'net/net-5-5-86.76%/encode.ckpt' saver.restore(sess, model_file) # print(sess.run(weights['encoder_h1'])) encoder_result = sess.run(encoder_op, feed_dict={X: data}) # # plt.scatter(encoder_result[:, 0], encoder_result[:, 1]) return encoder_result if __name__ == '__main__': unknowndata = UnknownData() unknowndata = fill(unknowndata, 1778, 336, 254) unknowndata = normalization(unknowndata, 1778, 336) result = encode(unknowndata) # tf.reset_default_graph() # problemdata = ProblemData() # problemdata = fill(problemdata, 2093, 336, 299) # problemdata = normalization(problemdata, 2093, 336) # result_ = encode(problemdata) tf.reset_default_graph() testdata = TestData() testdata = fill(testdata, 476, 336, 68) testdata = normalization(testdata, 476, 336) result__ = encode(testdata) # init_centroids = np.array(kpp_centers(result, 2))
from test_data_new import TestData # from en_coder_4 import encode from en_coder_5 import encode def euler_distance(point1, point2): # 计算两点之间的欧拉距离,支持多维 distance = 0.0 for a, b in zip(point1, point2): distance += math.pow(a - b, 2) return math.sqrt(distance) unknowndata = UnknownData() #未知数据产生聚类中心 unknowndata = fill(unknowndata, 1778, 336, 254) unknowndata = normalization(unknowndata, 1778, 336) U1 = encode(unknowndata) init_centroids = np.array(kpp_centers(U1, 2)) idx, centroids_all = runKmeans(U1, init_centroids, 100) centroids = centroids_all[-1] print("感知不明数据产生的聚类中心点:\n", centroids[0], centroids[1]) # plotData(U1, centroids_all, idx) # plt.scatter(U1[:, 0], U1[:, 1]) # plt.savefig('F:\\导出的图片.png') # plt.show() tf.reset_default_graph() problemdata = ProblemData() #问题数据 problemdata = fill(problemdata, 2093, 336, 299) problemdata = normalization(problemdata, 2093, 336) U2 = encode(problemdata)
# _, c = sess.run([optimizer, cost], feed_dict={X: data}) # if epoch % 100 == 0: # print("cost={:.9f}".format(c)) # encoder_result = sess.run(encoder_op, feed_dict={X: data}) # plt.scatter(encoder_result[:, 0], encoder_result[:, 1]) # saver.save(sess, 'net/net-4-/encode.ckpt') model_file = 'net/net-4-80%/encode.ckpt' saver.restore(sess, model_file) encoder_result = sess.run(encoder_op, feed_dict={X: data}) plt.scatter(encoder_result[:, 0], encoder_result[:, 1]) return encoder_result unknowndata = UnknownData() unknowndata = fill(unknowndata, 1778, 336, 254) unknowndata = normalization(unknowndata, 1778, 336) result = encode(unknowndata) # # plt.show() # tf.reset_default_graph() # problemdata = ProblemData() # problemdata = fill(problemdata, 2093, 336, 299) # problemdata = normalization(problemdata, 2093, 336) # result_ = encode(problemdata) init_centroids = np.array(kpp_centers(result, 2)) idx, centroids_all = runKmeans(result, init_centroids, 100) centroids = centroids_all[-1] plotData(result, centroids_all, idx) plt.show()