K-Means 집계 알고리즘과 Django Rest 프레임워크를 사용하여 개성 예측(글 부분은 GPT3에서 작성)

27781 단어

소개하다.


우리가 알고 있는 바와 같이 인공지능은 기술 변혁을 통해 현재 세계를 철저히 바꾸고 있다.기계 학습이 우리의 일상생활에 응용되는 데 있어서 기계 학습의 믿을 수 없는 응용은 개체의 개성 특징에 따라 이를 분류하는 것이다.이 별의 모든 사람은 유일무이하고 독특한 개성을 가지고 있다.고차원적이고 대량의 데이터의 가용성은 특정인을 대상으로 마케팅 활동의 유효성을 높이는 데 길을 닦았다.이런 개성을 바탕으로 하는 소통은 제품과 서비스의 지명도와 흡인력을 높이는 데 매우 효과적이다.
본고에서 우리는 50개의 문제를 바탕으로 하는 인격 예측 모델을 구축했고 Django Rest 프레임워크를 이용하여 이 모델을 배치했다.
나는 또한 나의 코드 스냅숏을 공유하고 GPT3를 어떻게 사용해서 내가 본문의 내용을 생성하는 것을 돕는지 소개할 것이다."구현 단계"섹션을 제외한 모든 텍스트는 GPT3에 의해 생성되며, 트윗, 시 쓰기, 요약 이메일 작성, 사소한 질문에 대한 답변, 번역 언어, 심지어 자신의 컴퓨터 프로그램을 작성할 수 있는 자연 언어 처리 시스템입니다.

K-균일치 분류 알고리즘.


K-균일치 집계 알고리즘은 기계학습을 감독하지 않는 알고리즘이다.간단하게 말하자면, 이것은 일종의 분류 알고리즘으로 데이터를 집단에 나누어 각각의 집단에 라벨을 분배한다.K-Means 알고리즘은 알고리즘이 충족될 때까지 다음 단계를 반복하는 반복 알고리즘입니다.
  • 입력 데이터를 K 컬렉션에 할당(K 컬렉션이 있고 알고리즘은 데이터를 K 컬렉션으로 정렬)
  • 입력한 모든 데이터를 가장 가까운 폴더에 분배한다(알고리즘은 데이터와 폴더 사이의 거리를 계산한 다음에 모든 데이터를 가장 가까운 폴더에 분배한다)
  • 트리거 코어 업데이트
  • K-균일치 알고리즘의 응용.


    k-means 분류 알고리즘은 각종 응용에 사용된다.그것은 마케팅, 광고, 시장 세분화, 고객 세분화에 쓰인다.그것은 누군가의 성격을 확인하는 등 각종 과학 분야에도 사용된다.누군가의 성격을 결정하다.

    다섯 가지 성격 특징(해양)


    5대 성격 특징은:
  • 경험에 대한 개방성
  • 진지
  • 외향형
  • 쾌적
  • 신경질.
  • 이것은 인류 행위의 다섯 가지 특징이다.사람들은 이 다섯 가지 특징 중 하나에서 5점 사이를 득점한다.예를 들어 누군가가 경험에 대한 개방성을 3점으로 나눈다고 가정하자.이것은 그/그녀가 새로운 경험에 대해 그리 개방적이지 않다는 것을 의미한다. 그/그녀는 자신의 방식에 대해 매우 만족하는 사람이고 그/그녀는 견지하기를 희망한다.그는 새로운 것에 대해 그리 개방적이지 않다. 그는 그것을 피하려고 했다.그/그녀는 새로운 것을 시도하는 것을 좋아하지 않는 사람이다.예를 들어 한 모임에서 그/그녀는 교제에 서툴고 말을 많이 하는 것을 좋아하지 않는다.그/그녀는 말이 적은 사람이고, 그/그녀는 교제에 그다지 능하지 않은 사람이다.모임에서 그/그녀는 구석에 틀어박혀 다른 사람과 이야기하지 않는 것을 좋아한다.그는 모임에 참석한 다른 사람들을 보러 남을 것이다.이것이 바로 그/그녀의 개성이다.
    현재 우리는 k-means 알고리즘과 5대 인격 특징을 기본적으로 이해했고 5대 인격 특징을 구축하는 것을 깊이 있게 연구했다.

    실시 절차.


    모델을 구축하고 저장하는 것부터 시작하여 이 모델은 나중에 API를 예측하는 데 사용될 것입니다.

    데이터 세트.


    Dell의 데이터 세트에는 온라인으로 수집한 1015342건의 설문 답안Open Psychometrics이 포함되어 있습니다.데이터 집합이 실제로 어떻게 나타났는지 봅시다.이 블로그의 데이터 집합과 전체 코드는 myGithub Repo에서 찾을 수 있습니다
    우리는 우선 필요한 의존항을 가져옵니다.라이브러리가 설치되어 있지 않으면 계속하기 전에 설치하십시오.
    import numpy as np 
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    import os
    from sklearn.cluster import KMeans
    from yellowbrick.cluster import KElbowVisualizer
    from sklearn.preprocessing import MinMaxScaler
    from sklearn.decomposition import PCA
    import joblib
    
    다음에는 pandas를 사용하여 데이터 세트를 로드한 다음 참가자의 수를 표시합니다.
    data_raw = pd.read_csv('data-final.csv', sep='\t')
    data = data_raw.copy()
    pd.options.display.max_columns = 150
    
    data.drop(data.columns[50:107], axis=1, inplace=True)
    data.drop(data.columns[51:], axis=1, inplace=True)
    
    print('Number of participants: ', len(data))
    data.head()
    
    Number of participants:  1015341
    

    데이터 집합의 탐색.


    먼저 누락된 값을 확인하고 다음과 같이 누락된 값을 삭제합니다.
    print('Missing value? ', data.isnull().values.any())
    print('How many? ', data.isnull().values.sum())
    data.dropna(inplace=True)
    print('Number of participants after eliminating missing values: ', len(data))
    
    Is there any missing value?  True
    How many missing values?  89227
    Number of participants after eliminating missing values:  1013481
    
    이제 코드를 입력하여 각 국가의 참가자 분포를 살펴보겠습니다.
    # Participants' nationality distriution
    countries = pd.DataFrame(data['country'].value_counts())
    countries_5000 = countries[countries['country'] >= 5000]
    plt.figure(figsize=(15,5))
    sns.barplot(data=countries_5000, x=countries_5000.index, y='country')
    plt.title('Countries With More Than 5000 Participants')
    plt.ylabel('Participants');
    

    이제 설문지의 문답 분포를 상상해 보자. 아래와 같다.
    # Defining a function to visualize the questions and answers distribution
    def vis_questions(groupname, questions, color):
        plt.figure(figsize=(40,60))
        for i in range(1, 11):
            plt.subplot(10,5,i)
            plt.hist(data[groupname[i-1]], bins=14, color= color, alpha=.5)
            plt.title(questions[groupname[i-1]], fontsize=18)
    

    외향적 성격과 관련된 문제와 건의


    print('Q&As Related to Extroversion Personality')
    vis_questions(EXT, ext_questions, 'orange')
    

    Q&As 신경질적 인격 관련


    print('Q&As Related to Neuroticism Personality')
    vis_questions(EST, est_questions, 'pink')
    

    성격에 맞는 Q&A


    print('Q&As Related to Agreeable Personality')
    vis_questions(AGR, agr_questions, 'red')
    

    문답은 책임을 다하는 인격과 관계가 있다


    print('Q&As Related to Conscientious Personality')
    vis_questions(CSN, csn_questions, 'purple')
    

    개방 인격과 관련된 문답


    print('Q&As Related to Open Personality')
    vis_questions(OPN, opn_questions, 'blue')
    

    모델 구축


    우리는 우리의 모델에 나타날 집단의 수량, 즉 인격 특질의 5가지 유형을 이미 알고 있다.코드를 어떻게 사용해서 이 값을 얻는지 봅시다.계산에 편리하도록 0-1 사이의 모든 값을 축척하고 다음과 같이 5000개의 견본만 사용합니다.
    df = data.drop('country', axis=1)
    columns = list(df.columns)
    
    scaler = MinMaxScaler(feature_range=(0,1))
    df = scaler.fit_transform(df)
    df = pd.DataFrame(df, columns=columns)
    df_sample = df[:5000]
    
    이제 팔꿈치 곡선을 상상해 봅시다.집계 분석에서 팔꿈치법은 일종의 계발식 방법으로 데이터가 집중된 집계수를 확정하는 데 쓰인다.이 방법은 해석의 변화를 묶음수로 그리는 함수를 포함하고 곡선의 커브를 묶음수로 선택합니다.
    kmeans = KMeans()
    visualizer = KElbowVisualizer(kmeans, k=(2,15))
    visualizer.fit(df_sample)
    visualizer.poof()
    

    보시다시피 다섯 개의 집합이 데이터 집합에 가장 적합해 보입니다. 이 연구는 다섯 가지 다른 성격을 식별하기 위한 것으로 알고 있습니다.

    참가자를 5개의 성격 그룹으로 나누다


    이를 위해, 우리는 표시되지 않은 데이터를 사용하지만, 국가열을 사용하지 않는다.
    df_model = data.drop('country', axis=1)
    
    # I define 5 clusters and fit my model
    kmeans = KMeans(n_clusters=5)
    k_fit = kmeans.fit(df_model)
    ## SAVE KFIT MODEL
    joblib_file = "BigFivePersonalityTestModel.joblib"
    joblib.dump(k_fit, joblib_file)
    
    # Predicting the Clusters
    pd.options.display.max_columns = 10
    predictions = k_fit.labels_
    df_model['Clusters'] = predictions
    df_model.head()
    
    
    EXT1    EXT2    EXT3    EXT4    EXT5    ... OPN7    OPN8    OPN9    OPN10   Clusters
    0   4.0 1.0 5.0 2.0 5.0 ... 5.0 3.0 4.0 5.0 3
    1   3.0 5.0 3.0 4.0 3.0 ... 4.0 2.0 5.0 3.0 2
    2   2.0 3.0 4.0 4.0 3.0 ... 5.0 3.0 4.0 4.0 2
    3   2.0 2.0 2.0 3.0 4.0 ... 4.0 4.0 3.0 3.0 1
    4   3.0 3.0 3.0 3.0 5.0 ... 5.0 3.0 5.0 5.0 3
    

    분석 모델 및 예측


    각 클러스터에는 다음과 같은 개체가 얼마나 있는지 살펴보겠습니다.
    df_model.Clusters.value_counts()
    
    4    227063
    2    212816
    3    210075
    0    200226
    1    163301
    Name: Clusters, dtype: int64
    
    우리들은 결과를 분류에 따라 조를 나누자.이렇게 하면 우리는 모든 집단의 모든 문제의 평균 답안을 조사할 수 있다.
    이렇게 하면 우리는 우리의 모델이 어떻게 사람을 분류하는지에 대해 직감을 가질 수 있다.
    pd.options.display.max_columns = 150
    df_model.groupby('Clusters').mean()
    
    이제 각 질문 그룹(EXT, EST.)을 요약해 보겠습니다.우리가 하나의 패턴을 볼 수 있는지 없는지를 보자.
    # Summing up the different questions groups
    col_list = list(df_model)
    ext = col_list[0:10]
    est = col_list[10:20]
    agr = col_list[20:30]
    csn = col_list[30:40]
    opn = col_list[40:50]
    
    data_sums = pd.DataFrame()
    data_sums['extroversion'] = df_model[ext].sum(axis=1)/10
    data_sums['neurotic'] = df_model[est].sum(axis=1)/10
    data_sums['agreeable'] = df_model[agr].sum(axis=1)/10
    data_sums['conscientious'] = df_model[csn].sum(axis=1)/10
    data_sums['open'] = df_model[opn].sum(axis=1)/10
    data_sums['clusters'] = predictions
    data_sums.groupby('clusters').mean()
    
    
    extroversion    neurotic    agreeable   conscientious   open
    clusters                    
    0   2.965969    3.645931    3.148628    3.173210    3.245529
    1   2.909467    2.525743    2.851802    2.914458    3.120373
    2   3.051889    2.984940    3.187544    3.159140    3.243641
    3   3.085431    2.423577    3.209064    3.106899    3.327173
    4   3.072319    3.426610    3.300147    3.211454    3.352370
    
    이제 우리 다섯 성격군의 평균치를 상상해 보자.
    # Visualizing the means for each cluster
    dataclusters = data_sums.groupby('clusters').mean()
    plt.figure(figsize=(22,3))
    for i in range(0, 5):
        plt.subplot(1,5,i+1)
        plt.bar(dataclusters.columns, dataclusters.iloc[:, i], color='green', alpha=0.2)
        plt.plot(dataclusters.columns, dataclusters.iloc[:, i], color='red')
        plt.title('Cluster ' + str(i))
        plt.xticks(rotation=45)
        plt.ylim(0,4);
    

    시각 형상 클러스터 예측


    pca = PCA(n_components=2)
    pca_fit = pca.fit_transform(df_model)
    
    df_pca = pd.DataFrame(data=pca_fit, columns=['PCA1', 'PCA2'])
    df_pca['Clusters'] = predictions
    df_pca.head()
    plt.figure(figsize=(10,10))
    sns.scatterplot(data=df_pca, x='PCA1', y='PCA2', hue='Clusters', palette='Set2', alpha=0.8)
    plt.title('Personality Clusters after PCA');
    

    예측 개성


    Microsoft Excel 스프레드시트에서 이러한 질문에 답했습니다.그리고 이 데이터를 이 노트에 추가하고 모델에 대한 답을 넣어서 내가 어떤 종류에 속할지 보겠습니다.
    my_data = pd.read_excel('my_personality_test.xlsx')
    my_personality = k_fit.predict(my_data)
    print('My Personality Cluster: ', my_personality)
    
    My Personality Cluster:  [2]
    

    나의 인격군을 상상하다


    col_list = list(my_data)
    ext = col_list[0:10]
    est = col_list[10:20]
    agr = col_list[20:30]
    csn = col_list[30:40]
    opn = col_list[40:50]
    
    my_sums = pd.DataFrame()
    my_sums['extroversion'] = my_data[ext].sum(axis=1)/10
    my_sums['neurotic'] = my_data[est].sum(axis=1)/10
    my_sums['agreeable'] = my_data[agr].sum(axis=1)/10
    my_sums['conscientious'] = my_data[csn].sum(axis=1)/10
    my_sums['open'] = my_data[opn].sum(axis=1)/10
    my_sums['cluster'] = my_personality
    print('Sum of my question groups')
    my_sums
    my_sum = my_sums.drop('cluster', axis=1)
    plt.bar(my_sum.columns, my_sum.iloc[0,:], color='green', alpha=0.2)
    plt.plot(my_sum.columns, my_sum.iloc[0,:], color='red')
    plt.title('Cluster 2')
    plt.xticks(rotation=45)
    plt.ylim(0,4);
    

    기왕 우리의 모형이 작동했으니, 우리 모형을 계속해서Restful API로 바꾸자

    모델을 RESTFUL API로 변환


    파이썬의 최선의 실천에 따라 프로젝트를 위한 가상 환경을 만들고 필요한 패키지를 설치할 것입니다.
    먼저 프로젝트 디렉토리를 만듭니다.
    $ mkdir djangoapp
    $ cd djangoapp
    
    
    이제 가상 환경을 만들고 필요한 패키지를 설치합니다.
    macOS 및 Unix 시스템의 경우:
    $ python3 -m venv myenv
    $ source myenv/bin/activate
    (myenv) $ pip install django requests numpy joblib scikit-learn xlsxwriter openpyxl
    
    
    Windows의 경우:
    $ python3 -m venv myenv
    $ myenv\Scripts\activate
    (myenv) $ pip install django requests numpy joblib scikit-learn xlsxwriter openpyxl
    

    Django 응용 프로그램 설정


    우선, 우리가 만든 디렉터리djangoapp로 이동하여 Django 프로젝트를 만듭니다.
    (myenv) $ django-admin startproject mainapp
    
    
    이렇게 하면 프로젝트 프레임에 대한 파일이 자동으로 생성됩니다.
    mainapp/
        manage.py
        mainapp/
            __init__.py
            settings.py
            urls.py
            asgi.py
            wsgi.py
    
    현재, 새로 만든 디렉터리 (관리자.py와 같은 디렉터리에 있는지 확인하기) 로 이동하여 프로그램 디렉터리를 만듭니다.
    (myenv) $ python manage.py startapp monitor
    
    이렇게 하면 다음이 작성됩니다.
    monitor/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py
    
    주 프로그램/설정에 있습니다.py 파일, 다음 줄을 찾아서 우리가 방금 만든 프로그램을 추가합니다.
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'monitor', #new line
    ]
    
    
    모니터 디렉터리에 있는 다음templates라는 새 디렉터리를 만들고 URL이라는 새 파일을 만듭니다.피야.모니터 프로그램의 디렉터리 구조는 다음과 같아야 한다
    monitor/
        __init__.py
        admin.py
        apps.py
        migrations/
        templates/
            __init__.py
        models.py
        tests.py
        urls.py
        views.py
    
    mainapp/URL을 확인하십시오.py 파일, 모니터링 응용 프로그램 URL을 추가하여 다음 모니터링 응용 프로그램에서 작성할 URL을 포함합니다.
    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        #path('admin/', admin.site.urls),
        path('', include('monitor.urls')),#monitor app url
    ]
    
    
    이제 모니터/URL에 있습니다.py 파일, 거기에 우리 사이트를 추가:
    from django.urls import path
    from .views import *
    
    urlpatterns = [
        path('persona', PersonalityPrediction.as_view(), name='personality'),
    ]
    
    기계 학습 모형을 저장하기 위해 다른 디렉터리를 만듭니다.나는 또한 전체 데이터 집합을 실현하고자 하는 사람들을 위해 데이터 집합을 프로젝트에 추가할 것이다.데이터 폴더를 강제로 만들지 않습니다.벡터 파일과 우리가 전에 만든 joblib 파일을 ml/model 폴더로 이동하는 것을 확보하십시오
    (venv)$ mkdir ml
    (venv)$ mkdir ml/models
    (venv)$ mkdir ml/data
    
    우리는 또 Django에게 우리의 기계 학습 모형이 어디에 있는지 알려줘야 한다.이러한 행을 설정에 추가합니다.py 파일:
    import os
    MODELS = os.path.join(BASE_DIR, 'ml/models')
    

    응용 프로그램으로 모형과 벡터를 불러옵니다.py


    응용 프로그램에서 만들고 저장한 모델을 로드합니다.따라서 프로그램이 시작될 때 훈련을 받은 모델을 한 번만 불러옵니다.그렇지 않으면 노드를 호출할 때마다 훈련된 모델을 불러오고 응답 시간이 느려집니다.
    응용 프로그램을 업데이트합시다.py
    import os
    import joblib
    from django.apps import AppConfig
    from django.conf import settings
    
    
    class ApiConfig(AppConfig):
        name = 'api'
        MODEL_FILE = os.path.join(settings.MODELS, "BigFivePersonalityTestModel.joblib")
        model = joblib.load(MODEL_FILE)
    

    뷰를 편집합니다.py


    이러한 의견은 주로 다음과 같습니다.
  • 들어오는 POST 요청을 처리합니다.
  • from django.shortcuts import render
    from rest_framework.views import APIView
    from rest_framework.response import Response
    import requests
    from .apps import *
    import pandas as pd
    import xlsxwriter
    
    #kmeans personality prediction view
    class PersonalityPrediction(APIView):
        def post(self, request):
            #get user input
            EXT1 = request.data.get('EXT1')
            EXT2 = request.data.get('EXT2')
            EXT3 = request.data.get('EXT3')
            EXT4 = request.data.get('EXT4')
            EXT5 = request.data.get('EXT5')
            EXT6 = request.data.get('EXT6')
            EXT7 = request.data.get('EXT7')
            EXT8 = request.data.get('EXT8')
            EXT9 = request.data.get('EXT9')
            EXT10 = request.data.get('EXT10')
    
            EST1 = request.data.get('EST1')
            EST2 = request.data.get('EST2')
            EST3 = request.data.get('EST3')
            EST4 = request.data.get('EST4')
            EST5 = request.data.get('EST5')
            EST6 = request.data.get('EST6')
            EST7 = request.data.get('EST7')
            EST8 = request.data.get('EST8')
            EST9 = request.data.get('EST9')
            EST10 = request.data.get('EST10')
    
            AGR1 = request.data.get('AGR1')
            AGR2 = request.data.get('AGR2')
            AGR3 = request.data.get('AGR3')
            AGR4 = request.data.get('AGR4')
            AGR5 = request.data.get('AGR5')
            AGR6 = request.data.get('AGR6')
            AGR7 = request.data.get('AGR7')
            AGR8 = request.data.get('AGR8')
            AGR9 = request.data.get('AGR9')
            AGR10 = request.data.get('AGR10')
    
            CSN1 = request.data.get('CSN1')
            CSN2 = request.data.get('CSN2')
            CSN3 = request.data.get('CSN3')
            CSN4 = request.data.get('CSN4')
            CSN5 = request.data.get('CSN5')
            CSN6 = request.data.get('CSN6')
            CSN7 = request.data.get('CSN7')
            CSN8 = request.data.get('CSN8')
            CSN9 = request.data.get('CSN9')
            CSN10 = request.data.get('CSN10')
    
            OPN1 = request.data.get('OPN1')
            OPN2 = request.data.get('OPN2')
            OPN3 = request.data.get('OPN3')
            OPN4 = request.data.get('OPN4')
            OPN5 = request.data.get('OPN5')
            OPN6 = request.data.get('OPN6')
            OPN7 = request.data.get('OPN7')
            OPN8 = request.data.get('OPN8')
            OPN9 = request.data.get('OPN9')
            OPN10 = request.data.get('OPN10')
            #load model
            kmeansModel = PersonalityTestConfig.model
            # Predicting the Clusters
            pd.options.display.max_columns = 10
            predictions = kmeansModel.labels_
    
            workbook = xlsxwriter.Workbook('hello.xlsx')
    
            worksheet = workbook.add_worksheet()
    
            worksheet.write('A1', 'EXT1')
            worksheet.write('A2', (EXT1))
    
            worksheet.write('B1', 'EXT2')
            worksheet.write('B2', (EXT2))
    
            worksheet.write('C1', 'EXT3')
            worksheet.write('C2', (EXT3))
    
            worksheet.write('D1', 'EXT4')
            worksheet.write('D2', (EXT4))
    
            worksheet.write('E1', 'EXT5')
            worksheet.write('E2', (EXT5))
    
            worksheet.write('F1', 'EXT6')
            worksheet.write('F2', (EXT6))
    
            worksheet.write('G1', 'EXT7')
            worksheet.write('G2', (EXT7))
    
            worksheet.write('H1', 'EXT8')
            worksheet.write('H2', (EXT8))
    
            worksheet.write('I1', 'EXT9')
            worksheet.write('I2', (EXT9))
    
            worksheet.write('J1', 'EXT10')
            worksheet.write('J2', (EXT10))
    
            worksheet.write('K1', 'EST1')
            worksheet.write('K2', (EST1))
    
            worksheet.write('L1', 'EST2')
            worksheet.write('L2', (EST2))
    
            worksheet.write('M1', 'EST3')
            worksheet.write('M2', (EST3))
    
            worksheet.write('N1', 'EST4')
            worksheet.write('N2', (EST4))
    
            worksheet.write('O1', 'EST5')
            worksheet.write('O2', (EST5))
    
            worksheet.write('P1', 'EST6')
            worksheet.write('P2', (EST6))
    
            worksheet.write('Q1', 'EST7')
            worksheet.write('Q2', (EST7))
    
            worksheet.write('R1', 'EST8')
            worksheet.write('R2', (EST8))
    
            worksheet.write('S1', 'EST9')
            worksheet.write('S2', (EST9))
    
            worksheet.write('T1', 'EST10')
            worksheet.write('T2', (EST10))
    
            worksheet.write('U1', 'AGR1')
            worksheet.write('U2', (AGR1))
    
            worksheet.write('V1', 'AGR2')
            worksheet.write('V2', (AGR2))
    
            worksheet.write('W1', 'AGR3')
            worksheet.write('W2', (AGR3))
    
            worksheet.write('X1', 'AGR4')
            worksheet.write('X2', (AGR4))
    
            worksheet.write('Y1', 'AGR5')
            worksheet.write('Y2', (AGR5))
    
            worksheet.write('Z1', 'AGR6')
            worksheet.write('Z2', (AGR6))
    
            worksheet.write('AA1', 'AGR7')
            worksheet.write('AA2', (AGR7))
    
            worksheet.write('AB1', 'AGR8')
            worksheet.write('AB2', (AGR8))
    
            worksheet.write('AC1', 'AGR9')
            worksheet.write('AC2', (AGR9))
    
            worksheet.write('AD1', 'AGR10')
            worksheet.write('AD2', (AGR10))
    
    
            worksheet.write('AE1', 'CSN1')
            worksheet.write('AE2', (CSN1))
    
            worksheet.write('AF1', 'CSN2')
            worksheet.write('AF2', (CSN2))
    
            worksheet.write('AG1', 'CSN3')
            worksheet.write('AG2', (CSN3))
    
            worksheet.write('AH1', 'CSN4')
            worksheet.write('AH2', (CSN4))
    
            worksheet.write('AI1', 'CSN5')
            worksheet.write('AI2', (CSN5))
    
            worksheet.write('AJ1', 'CSN6')
            worksheet.write('AJ2', (CSN6))
    
            worksheet.write('AK1', 'CSN7')
            worksheet.write('AK2', (CSN7))
    
            worksheet.write('AL1', 'CSN8')
            worksheet.write('AL2', (CSN8))
    
            worksheet.write('AM1', 'CSN9')
            worksheet.write('AM2', (CSN9))
    
            worksheet.write('AN1', 'CSN10')
            worksheet.write('AN2', (CSN10))
    
    
            worksheet.write('AO1', 'OPN1')
            worksheet.write('AO2', (OPN1))
    
            worksheet.write('AP1', 'OPN2')
            worksheet.write('AP2', (OPN2))
    
            worksheet.write('AQ1', 'OPN3')
            worksheet.write('AQ2', (OPN3))
    
            worksheet.write('AR1', 'OPN4')
            worksheet.write('AR2', (OPN4))
    
            worksheet.write('AS1', 'OPN5')
            worksheet.write('AS2', (OPN5))
    
            worksheet.write('AT1', 'OPN6')
            worksheet.write('AT2', (OPN6))
    
            worksheet.write('AU1', 'OPN7')
            worksheet.write('AU2', (OPN7))
    
            worksheet.write('AV1', 'OPN8')
            worksheet.write('AV2', (OPN8))
    
            worksheet.write('AW1', 'OPN9')
            worksheet.write('AW2', (OPN9))
    
            worksheet.write('AX1', 'OPN10')
            worksheet.write('AX2', (OPN10))
    
    
            # Finally, close the Excel file
            # via the close() method.
            workbook.close()
    
            my_data = pd.read_excel('hello.xlsx', engine='openpyxl')
    
            my_personality = kmeansModel.predict(my_data)
            print('My Personality Cluster: ', my_personality)
    
            # Summing up the my question groups
            col_list = list(my_data)
            ext = col_list[0:10]
            est = col_list[10:20]
            agr = col_list[20:30]
            csn = col_list[30:40]
            opn = col_list[40:50]
    
            my_sums = pd.DataFrame()
            my_sums['extroversion'] = my_data[ext].sum(axis=1)/10
            my_sums['neurotic'] = my_data[est].sum(axis=1)/10
            my_sums['agreeable'] = my_data[agr].sum(axis=1)/10
            my_sums['conscientious'] = my_data[csn].sum(axis=1)/10
            my_sums['open'] = my_data[opn].sum(axis=1)/10
            my_sums['cluster'] = my_personality
            print('Sum of my question groups')
            print(my_sums)
    
            response_dict = {"Prediction": my_sums}
            print(response_dict)
            return Response(response_dict, status=200)
    
    위의 코드는 먼저 요청한 본문에 추가된 데이터를 가져옵니다.그리고 코드는 프로그래밍 방식으로 새로운 excel 파일을 만들어서 예측에 사용하고 그룹을 응답으로 되돌려줍니다.

    우리의 모형을 시험하다.


    시스템을 테스트하려면 필요한 이전과django 서버를 실행하십시오.POSTMAN을 열고 서버에 POST 요청을 보내고 설문지 답안을 요청 본문에 추가합니다.우리는 우리의 성격군과 점수를 보여주는 견본 답장을 받아야 한다.
    내 라이브 시스템을 테스트하려면 다음 URL에 POST 요청을 보내십시오.
    https://alienx.tech/api/v1/persona
    
    다음 코드는 GPT3를 제시하여 이 블로그의 콘텐츠를 생성하는 데 도움을 주는 코드입니다.
    import openai
    openai.api_key = "VISIT OPENAI TO GET YOUR KEY"
    response = openai.Completion.create(
      engine="davinci",
      prompt="The Pixel District Janury 16, 2022n Title: Personality Segmentation Using K-Means Clustering Algorithm and Django Rest Framework!n tags: machine-learning, kmeans, gpt3, kmeans code sample Summary:  I am sharing my exprience in implementing kmeans clustering algorithmn in determining someones personality. I am explaining why kmeans clustering algorithms is, how it works configuration. I am explaining what the big five personality traits are. I am explaining why I think kmeans algorithm is the best to use in finding someones personality based on the  big five personality traits. I am also adding various example codes of the kmeans clustering to find the big five personality traits.n Full text: ",
      temperature=0.7,
      max_tokens=1655,
      top_p=1,
      frequency_penalty=0,
      presence_penalty=0
    )
    print(response)
    
    오늘은 여기까지.시청해 주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기