长江三角洲城市群数据平台(5)-Data_mining(主成分分析)

(1)在urls.py中新增以下url,

Paste_Image.png

(2)在data_mining.html中增加链接到主成分分析页面(data_pca),


长江三角洲城市群数据平台(5)-Data_mining(主成分分析)_第1张图片
Paste_Image.png
长江三角洲城市群数据平台(5)-Data_mining(主成分分析)_第2张图片
Paste_Image.png

(3)页面布局如下,

{% extends "base.html" %}
{% load staticfiles %}
{% block main %}
     

PCA計算

{% endblock %}

布局效果:


长江三角洲城市群数据平台(5)-Data_mining(主成分分析)_第3张图片
Paste_Image.png

(4)要实现点击效果:

长江三角洲城市群数据平台(5)-Data_mining(主成分分析)_第4张图片
Paste_Image.png

因此编写如下代码:

 

(5)在views中,编写试图函数。
首先导入pca模块,from sklearn.decomposition import PCA。

然后,编写模板显示函数,

def pca_show(request):
    return render(request, "data_mining/pca.html")

编写主成分分析函数,输出方差贡献率,

@csrf_exempt
def pca_cal(request):
    base_dir = 'media/data_mining/'
    l = os.listdir(base_dir)
    l.sort(key=lambda fn: os.path.getmtime(base_dir + fn) if not os.path.isdir(base_dir + fn) else 0)
    name = l[-1]
    inputfile = base_dir + name
    data = pd.read_csv(inputfile, index_col=0, header=0)
    pca=PCA()
    pca.fit(data)
    components=pca.components_.tolist()
    explained_variance_ratio=pca.explained_variance_ratio_.tolist()
    obj={}
    obj['comp']=components
    obj['var'] = explained_variance_ratio
    return HttpResponse(json.dumps(obj),content_type="application/json")

编写主成分分析函数,输出降维后的结果,

@csrf_exempt
def pca_res(request):
    comp_num = request.GET.get('comp_num', '')
    base_dir = 'media/data_mining/'
    l = os.listdir(base_dir)
    l.sort(key=lambda fn: os.path.getmtime(base_dir + fn) if not os.path.isdir(base_dir + fn) else 0)
    name = l[-1]
    inputfile = base_dir + name
    outputfile = "static/output/" + name + "pca_output" + ".csv"
    data = pd.read_csv(inputfile, index_col=0, header=0)
    pca=PCA(int(comp_num))
    pca.fit(data)
    low_d=pca.transform(data)
    pd.DataFrame(low_d).to_csv(outputfile)
    low_d=low_d.tolist()
    obj={}
    obj['low_d']=low_d
    return HttpResponse(json.dumps(obj),content_type="application/json")

你可能感兴趣的:(长江三角洲城市群数据平台(5)-Data_mining(主成分分析))