<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      2023西工大數模校賽部分模型--基于Delaunay的3維點云分割代碼

      1.代碼

      %matplotlib widget
      import pandas as pd
      import numpy as np
      import matplotlib as mpl
      from scipy.spatial import Delaunay
      from sklearn.cluster import KMeans
      import matplotlib.pyplot as plt
      from mpl_toolkits.mplot3d import Axes3D
      from scipy.spatial import ConvexHull
      from sklearn.cluster import DBSCAN
      from sklearn.preprocessing import StandardScaler
      
      fig = plt.figure()
      ax = Axes3D(fig,auto_add_to_figure=False)
      fig.add_axes(ax)
      color = ['red', 'pink', 'orange', 'blue', 'green', 'yellow', 'cyan', 'magenta', 'gray']
      
      def To_Legend(n_clusters):
          y_unique = range(n_clusters)
          methods = ('Genre1', 'Genre2', 'Genre3', 'Genre4', 'Genre5', 'Genre6', 'Genre7', 'Genre8', 
                     'Genre9', 'Genre10', 'Genre11', 'Genre12', 'Genre13', 'Genre14')  # 圖例說明集
          legend_lines = [mpl.lines.Line2D([0], [0], linestyle="none", marker='o', c=color[y]) for y in y_unique]
          legend_labels = [methods[y] for y in y_unique]
          ax.legend(legend_lines, legend_labels, numpoints=1, title='Cluster results')
      
      def To_Execl(n_clusters, s):
          for i in range(n_clusters):
              ned = hull_points[labels == i, :]
              result = []
              for sub_list in ned:
                  lst = str(sub_list[:])
                  lst = lst.lstrip('[')
                  lst = lst.rstrip(' ]')
                  lst = lst.split()
                  res = []
                  for num in lst:
                      res.append(float(num))
                  result.append(res)
              df = pd.DataFrame(result)
              writer = pd.ExcelWriter(s[i])
              df.to_excel(writer)
              writer.save()
      
      data = pd.read_excel("pointcloud.xlsx")
      points = data.to_numpy()
      
      tri = Delaunay(points)
      
      normals = []
      for sim_tri in tri.simplices:
          p1, p2, p3 = points[sim_tri[:3]]
          v1, v2 = p2-p1, p3-p1
          n = np.cross(v1, v2)
          normals.append(n)
      normals = np.array(normals)
      
      n_clusters = 3 # 這個參數是筆者手調的,也可以用auto-kmeans,讓模型自適應
      kmeans = KMeans(n_clusters=n_clusters, init="k-means++").fit(normals)
      labels = kmeans.labels_
      
      tri_ids = [[] for i in range(n_clusters)]
      for i, label in enumerate(labels):
          tri_ids[label].append(i)
      
      hull_points = []
      j = 0
      e = 0
      for cluster in tri_ids:
          j += 1
          points_in_cluster = points[tri.simplices[cluster]]
          result = []
          for sub_list in points_in_cluster:
              for ssub in sub_list:
                  lst = str(ssub)
                  lst = lst.lstrip('[')
                  lst = lst.rstrip(']')
                  lst = lst.strip().split()
                  res = []
                  for num in lst:
                      res.append(float(num))
                  result.append(res)
          if result is not None:
              hull = ConvexHull(result, qhull_options="Qs")
              for i in hull.vertices:
                  hull_points.append(result[int(i)])
      
      hull_points = StandardScaler().fit_transform(hull_points)
      hull_points = np.array(hull_points)
      db = DBSCAN(eps=0.26).fit(hull_points) # 0.26是超參數,手調,筆者還沒研究,可以向幾何重心于模型邊緣距離關系方向研究試試
      core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
      core_samples_mask[db.core_sample_indices_] = True
      labels = db.labels_
      core_indices = db.core_sample_indices_
      centroid = hull_points[core_indices]
      n_clusters = len(set(db.labels_)) - (1 if -1 in db.labels_ else 0)
      
      s = []
      for i in range(n_clusters):
          s.append('D:\\Computer\\Algorithm\\Pycharm\\MathTest\\Data\\data{}.xlsx'.format(i + 1)) # 設為要保存的數據集地址
      To_Execl(n_clusters, s)
      
      for i in range(n_clusters):
          ax.scatter(hull_points[labels == i, 0], hull_points[labels == i, 1], hull_points[labels == i, 2], c=color[i])
      To_Legend(n_clusters)
      
      

      2.展示效果

      項目下載連接

      posted @ 2023-08-06 00:05  O_obk  閱讀(98)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 成人国产精品免费网站| 久久美女夜夜骚骚免费视频| 亚洲一区二区三区18禁| 一级国产在线观看高清| 免费无码肉片在线观看| 久久日产一线二线三线| 亚洲精品国产av成拍色拍个| 黄色三级亚洲男人的天堂| 人体内射精一区二区三区| 国产欧美日韩亚洲一区二区三区| 国产片AV国语在线观看手机版| 少妇高潮喷水在线观看| 日韩一区二区三区女优丝袜| 国产成人精品视频不卡| 欧美午夜精品久久久久久浪潮| 97碰碰碰免费公开在线视频| 又粗又硬又黄a级毛片| 亚洲欧美日本久久网站| 狠狠躁夜夜人人爽天96| 国产成人最新三级在线视频| 精品中文人妻在线不卡| 国产乱妇乱子视频在播放| 又大又紧又粉嫩18p少妇| 国产三级黄色的在线观看| 日本精品极品视频在线| 欧美一本大道香蕉综合视频| 亚洲中文字幕无码av在线| 色综合久久综合中文综合网| 无码人妻丰满熟妇区毛片18| 国产精品一区二区中文| 久久精品夜夜夜夜夜久久| 国产精品白嫩初高生免费视频| 蜜臀av久久国产午夜| 亚洲欧洲av一区二区| 亚洲av永久无码精品天堂久久| 中文字幕 制服 亚洲 另类| 久久人与动人物a级毛片| 国产欧美久久一区二区三区| 国产精品美女免费无遮挡| 成人特黄A级毛片免费视频 | 亚洲高潮喷水无码AV电影|