Bläddra i källkod

数据生成表格,tab分解,tar.gz打包

Huan 5 år sedan
förälder
incheckning
91ce9fe1c2
3 ändrade filer med 87 tillägg och 52 borttagningar
  1. 84 50
      Learn_Numpy.py
  2. 1 2
      Machine_learning.py
  3. 2 0
      Text.py

+ 84 - 50
Learn_Numpy.py

@@ -3,6 +3,7 @@ from pyecharts.components import Image
 from pyecharts import options as opts
 from random import randint
 from pyecharts.charts import *
+from pyecharts.charts import Tab as tab_First
 from pyecharts.options.series_options import JsCode
 from scipy.cluster.hierarchy import dendrogram, ward
 import matplotlib.pyplot as plt
@@ -25,8 +26,11 @@ from sklearn.svm import SVC,SVR#SVC是svm分类,SVR是svm回归
 from sklearn.neural_network import MLPClassifier,MLPRegressor
 from sklearn.manifold import TSNE
 from sklearn.cluster import KMeans,AgglomerativeClustering,DBSCAN
-from pyecharts.charts import *
-# import sklearn as sk
+from os.path import split as path_split
+from os.path import exists,basename
+from os import mkdir
+import tarfile
+import pickle
 
 #设置
 np.set_printoptions(threshold=np.inf)
@@ -34,6 +38,21 @@ global_Set = dict(toolbox_opts=opts.ToolboxOpts(is_show=True),legend_opts=opts.L
 global_Leg = dict(toolbox_opts=opts.ToolboxOpts(is_show=True),legend_opts=opts.LegendOpts(is_show=False))
 Label_Set = dict(label_opts=opts.LabelOpts(is_show=False))
 
+class Tab(tab_First):
+    def __init__(self, *args,**kwargs):
+        super(Tab, self).__init__(*args,**kwargs)
+        self.element = {}#记录tab组成元素 name:charts
+
+    def add(self, chart, tab_name):
+        self.element[tab_name] = chart
+        return super(Tab, self).add(chart, tab_name)
+
+    def render(self,path: str = "render.html",template_name: str = "simple_tab.html",*args,**kwargs,) -> str:
+        Dic = path_split(path)[0]
+        for i in self.element:
+            self.element[i].render(Dic + '/' + i + '.html')
+        return super(Tab, self).render(path,template_name)
+
 class Table(Table_Fisrt):
     def add(self, headers, rows, attributes = None):
         if len(rows) == 1:
@@ -1119,7 +1138,7 @@ class Des(To_PyeBase):#数据分析
         Cumulative_calculation(data,np.max,'累计最大值',tab)
         Cumulative_calculation(data,np.min,'累计最小值',tab)
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/数据分析.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1150,7 +1169,7 @@ class CORR(To_PyeBase):#相关性和协方差
 
         desTo_CSV(Dic, f'相关性矩阵', corr)
         desTo_CSV(Dic, f'协方差矩阵', cov)
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/数据相关性.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1229,7 +1248,7 @@ class MatrixScatter(To_PyeBase):#矩阵散点图
             c = Scatter()
         tab.add(c,'矩阵散点图')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/矩阵散点图.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1245,7 +1264,7 @@ class Cluster_Tree(To_PyeBase):#聚类树状图
         image.add(src=Dic + r'/Cluster_graph.png',).set_global_opts(title_opts=opts.ComponentTitleOpts(title="聚类树状图"))
         tab.add(image,'聚类树状图')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/聚类树状图.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1308,7 +1327,7 @@ class Class_To_Bar(To_PyeBase):#类型柱状图
             tab.add(c, f'类型-[{num_i}]特征统计柱状图')
 
         #未完成
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/特征统计.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1333,7 +1352,7 @@ class Numpy_To_HeatMap(To_PyeBase):#Numpy矩阵绘制热力图
         tab.add(c,'矩阵热力图')
         tab.add(make_Tab(x,data.T.tolist()),f'矩阵热力图:表格')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/矩阵热力图.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1394,7 +1413,7 @@ class Predictive_HeatMap_Base(To_PyeBase):#绘制预测型热力图
             c = Table().add(headers=heard, rows=[data])
             tab.add(c, '数据表')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/预测热力图.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1423,7 +1442,7 @@ class Near_feature_scatter_class_More(To_PyeBase):
         c = Table().add(headers=heard, rows=[data])
         tab.add(c, '数据表')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/数据特征散点图(分类).HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1441,7 +1460,7 @@ class Near_feature_scatter_More(To_PyeBase):
         c = Table().add(headers=heard, rows=[data])
         tab.add(c, '数据表')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/数据特征散点图.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1463,7 +1482,7 @@ class Near_feature_scatter_class(To_PyeBase):#临近特征散点图:分类数
         c = Table().add(headers=heard, rows=[data])
         tab.add(c, '数据表')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/临近数据特征散点图(分类).HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1481,7 +1500,7 @@ class Near_feature_scatter(To_PyeBase):#临近特征散点图:连续数据
         data = [f'{i}' for i in x_means]
         tab.add(make_Tab(columns,[data]), '数据表')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/临近数据特征散点图.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1499,7 +1518,7 @@ class Feature_scatter_YX(To_PyeBase):#y-x图
         data = [f'{i}' for i in x_means]
         tab.add(make_Tab(columns,[data]), '数据表')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/特征y-x图像.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1549,7 +1568,7 @@ class Line_Model(Study_MachineBase):
         desTo_CSV(Dic, '系数表', [w_list] + [b], [f'系数W[{i}]' for i in range(len(w_list))] + ['截距'])
         desTo_CSV(Dic, '预测表', [[f'{i}' for i in x_means]], [f'普适预测第{i}特征' for i in range(len(x_means))])
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/线性回归模型.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1601,7 +1620,7 @@ class LogisticRegression_Model(Study_MachineBase):
         desTo_CSV(Dic, '截距表', [b], [f'截距{i}' for i in range(len(b))])
         desTo_CSV(Dic, '预测表', [[f'{i}' for i in x_means]], [f'普适预测第{i}特征' for i in range(len(x_means))])
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/逻辑回归.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1705,7 +1724,7 @@ class Knn_Model(Study_MachineBase):
             c = Table().add(headers=heard, rows=[data])
             tab.add(c, '数据表')
         desTo_CSV(Dic, '预测表', [[f'{i}' for i in x_means]], [f'普适预测第{i}特征' for i in range(len(x_means))])
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/K.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1774,7 +1793,7 @@ class Tree_Model(Study_MachineBase):
             tab.add(make_Tab([f'普适预测第{i}特征' for i in range(len(x_means))] + [f'特征{i}重要性' for i in range(len(importance))],
                              [[f'{i}' for i in x_means] + importance]), '数据表')
         desTo_CSV(Dic, '预测表', [[f'{i}' for i in x_means]], [f'普适预测第{i}特征' for i in range(len(x_means))])
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/决策树.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1830,7 +1849,7 @@ class Forest_Model(Study_MachineBase):
 
             tab.add(make_Tab([f'普适预测第{i}特征' for i in range(len(x_means))],[[f'{i}' for i in x_means]]), '数据表')
         desTo_CSV(Dic, '预测表', [[f'{i}' for i in x_means]], [f'普适预测第{i}特征' for i in range(len(x_means))])
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/随机森林.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1887,7 +1906,7 @@ class GradientTree_Model(Study_MachineBase):#继承Tree_Model主要是继承Des
 
             tab.add(make_Tab([f'普适预测第{i}特征' for i in range(len(x_means))],[[f'{i}' for i in x_means]]), '数据表')
         desTo_CSV(Dic, '预测表', [[f'{i}' for i in x_means]], [f'普适预测第{i}特征' for i in range(len(x_means))])
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/梯度提升回归树.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1933,7 +1952,7 @@ class SVC_Model(Study_MachineBase):
         if U:desTo_CSV(Dic, '截距表', [b], [f'截距{i}' for i in range(len(b))])
         desTo_CSV(Dic, '预测表', [[f'{i}' for i in x_means]], [f'普适预测第{i}特征' for i in range(len(x_means))])
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/支持向量机分类.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -1974,7 +1993,7 @@ class SVR_Model(Study_MachineBase):
         desTo_CSV(Dic, '预测表', [[f'{i}' for i in x_means]], [f'普适预测第{i}特征' for i in range(len(x_means))])
 
         tab.add(make_Tab([f'普适预测第{i}特征' for i in range(len(x_means))],[[f'{i}' for i in x_means]]), '数据表')
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/支持向量机回归.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2003,7 +2022,7 @@ class Variance_Model(Unsupervised):#无监督
                 .set_global_opts(title_opts=opts.TitleOpts(title='系数w柱状图'), **global_Set)
         )
         tab.add(c,'数据标准差')
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/方差特征选择.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2052,7 +2071,7 @@ class SelectKBest_Model(prep_Base):#无监督
         )
         tab.add(c,'单变量重要程度')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/单一变量特征选择.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2125,7 +2144,7 @@ class SelectFrom_Model(prep_Base):#无监督
                 make_Bar(self.Model.feature_importances_)
             except:pass
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/模型特征选择.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2150,7 +2169,7 @@ class Standardization_Model(Unsupervised):#z-score标准化 无监督
         make_bar('方差',means,tab)
         make_bar('Scale',scale,tab)
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/z-score标准化.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2174,7 +2193,7 @@ class MinMaxScaler_Model(Unsupervised):#离差标准化
         tab.add(make_Tab(heard= [f'[{i}]特征最大值' for i in range(len(max_))] + [f'[{i}]特征最小值' for i in range(len(min_))],
                          row=[max_ + min_]), '数据表格')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/离差标准化.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2210,7 +2229,7 @@ class LogScaler_Model(prep_Base):#对数标准化
         Conversion_control(y_data,x_data,tab)
         tab.add(make_Tab(heard=['最大对数值(自然对数)'],row=[[str(self.max_logx)]]),'数据表格')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/对数标准化.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2237,7 +2256,7 @@ class atanScaler_Model(prep_Base):#atan标准化
         x_data = self.x_trainData
         Conversion_control(y_data,x_data,tab)
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/反正切函数标准化.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2274,7 +2293,7 @@ class decimalScaler_Model(prep_Base):#小数定标准化
         Conversion_control(y_data,x_data,tab)
         tab.add(make_Tab(heard=['小数位数:j'], row=[[j]]), '数据表格')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/小数定标标准化.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2316,7 +2335,7 @@ class Mapzoom_Model(prep_Base):#映射标准化
         Conversion_control(y_data,x_data,tab)
         tab.add(make_Tab(heard=['最大值','最小值'], row=[[max,min]]), '数据表格')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/映射标准化.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2343,7 +2362,7 @@ class sigmodScaler_Model(prep_Base):#sigmod变换
         x_data = self.x_trainData
         Conversion_control(y_data,x_data,tab)
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/Sigmoid变换.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2374,7 +2393,7 @@ class Fuzzy_quantization_Model(prep_Base):#模糊量化标准化
             min = self.min
         x_Predict = 1 / 2 + (1 / 2) * np.sin(np.pi / (max - min) * (x_data - (max-min) / 2))
         self.y_trainData = x_Predict.copy()
-        return x_Predict,'映射标准化'
+        return x_Predict,'模糊量化标准化'
 
     def Des(self,Dic,*args,**kwargs):
         tab = Tab()
@@ -2385,7 +2404,7 @@ class Fuzzy_quantization_Model(prep_Base):#模糊量化标准化
         Conversion_control(y_data,x_data,tab)
         tab.add(make_Tab(heard=['最大值','最小值'], row=[[max,min]]), '数据表格')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/模糊量化标准化.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2403,7 +2422,7 @@ class Regularization_Model(Unsupervised):#正则化
         x_data = self.x_trainData.copy()
         Conversion_control(y_data,x_data,tab)
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/正则化.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2422,7 +2441,7 @@ class Binarizer_Model(Unsupervised):#二值化
         get_y = Discrete_Feature_visualization(y_data,'转换数据')#转换
         for i in range(len(get_y)):
             tab.add(get_y[i],f'[{i}]数据x-x离散散点图')
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/二值离散化.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2470,7 +2489,7 @@ class Discretization_Model(prep_Base):#n值离散
         get_y = Discrete_Feature_visualization(y_data, '转换数据')  # 转换
         for i in range(len(get_y)):
             tab.add(get_y[i], f'[{i}]数据x-x离散散点图')
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/多值离散化.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2502,7 +2521,7 @@ class Label_Model(prep_Base):#数字编码
         get_y = Discrete_Feature_visualization(y_data, '转换数据')  # 转换
         for i in range(len(get_y)):
             tab.add(get_y[i], f'[{i}]数据x-x离散散点图')
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/数字编码.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2555,7 +2574,7 @@ class OneHotEncoder_Model(prep_Base):#独热编码
         get_y = Discrete_Feature_visualization(y_data, '转换数据')  # 转换
         for i in range(len(get_y)):
             tab.add(get_y[i], f'[{i}]数据x-x离散散点图')
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/独热编码.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2580,7 +2599,7 @@ class Missed_Model(Unsupervised):#缺失数据补充
         x_data = self.x_trainData
         Conversion_control(y_data,x_data,tab)
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/缺失数据填充.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2631,7 +2650,7 @@ class PCA_Model(Unsupervised):
         desTo_CSV(Dic, '方量差', [var], [f'第[{i}]主成分' for i in range(len(var))])
 
         tab.add(c, '方量差柱状图')
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/主成分分析.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2682,7 +2701,7 @@ class RPCA_Model(Unsupervised):
         tab.add(c, '方量差柱状图')
         desTo_CSV(Dic, '成分重要性', importance, [x_data],[y_data])
         desTo_CSV(Dic, '方量差', [var], [f'第[{i}]主成分' for i in range(len(var))])
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/RPCA(主成分分析).HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2706,7 +2725,7 @@ class KPCA_Model(Unsupervised):
         y_data = self.y_trainData
         Conversion_Separate_Format(y_data, tab)
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/KPCA(主成分分析).HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2802,7 +2821,7 @@ class NMF_Model(Unsupervised):
         desTo_CSV(Dic, '系数矩阵', h_data)
         desTo_CSV(Dic, '系数*权重矩阵', wh_data)
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/非负矩阵分解.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2829,7 +2848,7 @@ class TSNE_Model(Unsupervised):
         y_data = self.y_trainData
         Conversion_Separate_Format(y_data,tab)
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/T-SNE.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2893,7 +2912,7 @@ class MLP_Model(Study_MachineBase):#神经网络(多层感知机),有监督学
 
         tab.add(make_Tab(heard,[data]),'数据表')
 
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/多层感知机.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2939,7 +2958,7 @@ class kmeans_Model(UnsupervisedModel):
         c = Table().add(headers=heard, rows=[data])
         tab.add(c, '数据表')
         desTo_CSV(Dic, '预测表', [[f'{i}' for i in x_means]], [f'普适预测第{i}特征' for i in range(len(x_means))])
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/k-means聚类.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -2997,7 +3016,7 @@ class Agglomerative_Model(UnsupervisedModel):
         tab.add(c, '数据表')
 
         desTo_CSV(Dic, '预测表', [[f'{i}' for i in x_means]], [f'普适预测第{i}特征' for i in range(len(x_means))])
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/层次聚类.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -3041,7 +3060,7 @@ class DBSCAN_Model(UnsupervisedModel):
         tab.add(c, '数据表')
 
         desTo_CSV(Dic, '预测表', [[f'{i}' for i in x_means]], [f'普适预测第{i}特征' for i in range(len(x_means))])
-        save = Dic + r'/render.HTML'
+        save = Dic + r'/密度聚类.HTML'
         tab.render(save)  # 生成HTML
         return save,
 
@@ -3237,9 +3256,24 @@ class Machine_Learner(Learner):#数据处理者
         return model.Score(x,y)
 
     def Show_Args(self,Learner,Dic):#显示参数
+        dic = Dic + f'/{Learner}数据[CoTan]'
+        new_dic = dic
+        a = 0
+        while exists(new_dic):#直到他不存在 —— False
+            new_dic = dic + f'[{a}]'
+            a += 1
+        mkdir(new_dic)
         model = self.get_Learner(Learner)
-        return model.Des(Dic)
+        #打包
+        save = model.Des(new_dic)[0]
+        make_targz(f'{new_dic}.tar.gz',new_dic)
+        return save,new_dic
 
     def Del_Leaner(self,Leaner):
         del self.Learner[Leaner]
         del self.Learner_Type[Leaner]
+
+def make_targz(output_filename, source_dir):
+    with tarfile.open(output_filename, "w:gz") as tar:
+        tar.add(source_dir, arcname=basename(source_dir))
+    return output_filename

+ 1 - 2
Machine_learning.py

@@ -515,8 +515,7 @@ def Show_Args():
     Dic = askdirectory(title='选择保存的CSV')
     data = ML.Show_Args(learner,Dic)
     webbrowser.open(data[0])
-    # title = f'CoTan数据处理 查看数据:{learner}'
-    # Creat_TextSheet(f'对象:{learner}\n\n{Data[0]}\n\n\n{Data[1]}', title)
+    webbrowser.open(data[1])#还可以打开文件管理器
     Update_BOX()
 
 

+ 2 - 0
Text.py

@@ -0,0 +1,2 @@
+import os
+print(os.path.split('111/111/11'))