찾다
백엔드 개발파이썬 튜토리얼ML을 통한 노트북 가격 예측

이전 게시물에서는 PCComponentes에서 웹 스크래핑을 수행하여 노트북 데이터로 CSV를 생성하는 스크립트를 만들었습니다.

이 아이디어는 제공하는 구성 요소에 따라 장치 가격을 예측하는 기계 학습 모델을 만들려고 할 때 발생했습니다. 그러나 조사 중에 모델을 훈련하는 데 사용할 수 있는 공개 DataFrame을 찾았지만 여기에는 문제가 있었습니다. 가격이 2015년으로 거슬러 올라가서 거의 사용되지 않았습니다.

이러한 이유로 저는 업데이트되고 안정적인 데이터를 얻을 수 있는 PCComponentes 웹사이트에서 직접 DataFrame을 구축하기로 결정했습니다. 또한 이 프로세스는 향후에 자동화될 수 있습니다(적어도 PCComponentes가 웹 사이트 구조를 변경할 때까지).

들어가보자!


DataFrame 데이터 처리

모델을 학습시키기 전에 데이터를 정리하고 정리하여 더 쉽게 읽고 처리할 수 있도록 해야 합니다. 이를 위해 데이터 분석 및 처리에 널리 사용되는 Numpy, Pandas 및 Matplotlib 라이브러리를 사용합니다.

가장 먼저 이러한 라이브러리를 가져오고 생성된 CSV를 여는 것입니다.

import pandas as pd  
import numpy as np  
import matplotlib.pyplot as plt  

그런 다음 비어 있거나 null 값이 있는 행을 삭제합니다.

df = df.dropna()  

데이터 분석 및 필터링

사용 가능한 다양한 유형의 CPU를 분석하는 것부터 시작해 보겠습니다. 이를 보려면 Seaborn 라이브러리를 사용합니다.

import seaborn as sns  
sns.countplot(data=df, x='CPU')

Predicción de Precios de Portátiles con ML

Predicción de Precios de Portátiles con ML

여기에는 207가지 유형의 CPU가 있습니다. 이러한 모든 값을 사용하여 모델을 교육하는 것은 문제가 될 수 있습니다. 많은 데이터가 관련성이 없고 성능에 영향을 줄 수 있는 노이즈를 생성하기 때문입니다.

전체 열을 제거하는 대신 가장 관련성이 높은 값을 필터링합니다.

def cpu_type_define(text):
    text = text.split(' ')
    if text[0] == 'intel':
        if 'i' in text[-1]:
            if text[-1].split('-')[0] == 'i3':
                return 'low gamma intel processor'

            return text[0]+' '+text[1]+' '+text[-1].split('-')[0] 

        return 'low gamma intel processor'
    elif text[0] == 'amd':
        if text[1] == 'ryzen':
            if text[2] == '3':
                return 'low gamma amd processor'

            return text[0]+' '+text[1]+' '+text[2]

        return 'low gamma amd processor'
    elif 'm' in text[0]:
        return 'Mac Processor'
    else:
        return 'Other Processor'

data['Cpu'] = data['Cpu'].apply(cpu_type_define)
sns.histplot(data=data,x='Cpu')
data['Cpu'].value_counts()

결과:

Predicción de Precios de Portátiles con ML


GPU 필터링

그래픽 카드(GPU)에서도 유사한 프로세스를 수행하여 데이터의 노이즈를 방지하기 위해 범주 수를 줄입니다.

def gpu_type_define(text):    

    if 'rtx' in text:

        num = int(''.join([char for char in text if char.isdigit()]))

        if num == 4080 or num == 4090 or num == 3080:
            return 'Nvidia High gamma'
        elif num == 4070 or num == 3070 or num == 4060 or num == 2080:
            return 'Nivida medium gamma'
        elif num == 3050 or num == 3060 or num == 4050 or num == 2070:
            return 'Nvidia low gamma'
        else:
            return 'Other nvidia grafic card'

    elif 'radeon' in text:

        if 'rx' in text:
            return 'Amd High gamma'
        else:
            return 'Amd low Gamma'

    elif 'gpu' in text:
        return 'Apple integrated graphics'

    return text



data['Gpu'] = data['Gpu'].apply(gpu_type_define)
sns.histplot(data=data,x='Gpu')
data['Gpu'].value_counts()  

결과:

Predicción de Precios de Portátiles con ML


스토리지 및 RAM 처리

스토리지 데이터를 단순화하기 위해 모든 하드 드라이브의 총 공간을 단일 값으로 결합합니다.

def fitler_ssd(text):
    two_discs = text.split('+')


    if len(two_discs) == 2:
        return int(''.join([char for char in two_discs[0] if char.isdigit()])) + int(''.join([char for char in two_discs[1] if char.isdigit()]))        
    else:
        return int(''.join([char for char in text if char.isdigit()]))

data['SSD'] = data['SSD'].str.replace('tb','000')
data['SSD'] = data['SSD'].str.replace('gb','')
data['SSD'] = data['SSD'].str.replace('emmc','')
data['SSD'] = data['SSD'].str.replace('ssd','')

마지막으로 RAM 값을 필터링하여 숫자만 유지합니다.

import pandas as pd  
import numpy as np  
import matplotlib.pyplot as plt  


숫자가 아닌 데이터 인코딩

모델을 훈련하기 전에 숫자가 아닌 열을 알고리즘이 해석할 수 있는 데이터로 변환해야 합니다. 이를 위해 sklearn 라이브러리의 ColumnTransformer 및 OneHotEncoder를 사용합니다.

df = df.dropna()  

모델 훈련

결정계수(R2 점수)에 따라 어떤 알고리즘이 가장 효율적인지 결정하기 위해 여러 가지 머신러닝 알고리즘을 테스트했습니다. 결과는 다음과 같습니다.

Modelo R2 Score
Logistic Regression -4086280.26
Random Forest 0.8025
ExtraTreeRegressor 0.7531
GradientBoostingRegressor 0.8025
XGBRegressor 0.7556

R2가 1에 가까운 Random Forest와 GradientBoostingRegressor를 사용하여 최상의 결과를 얻었습니다.

더욱 개선하기 위해 Voting Regressor를 사용하여 이러한 알고리즘을 결합하여 R2 점수 0.8085를 달성했습니다.

import seaborn as sns  
sns.countplot(data=df, x='CPU')

결론

Voting Regressor로 훈련한 모델이 가장 효율적이었습니다. 이제 웹 애플리케이션에 통합할 준비가 되었습니다. 이에 대해서는 다음 게시물에서 자세히 설명하겠습니다.

프로젝트 링크

위 내용은 ML을 통한 노트북 가격 예측의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
목록과 배열 사이의 선택은 큰 데이터 세트를 다루는 파이썬 응용 프로그램의 전반적인 성능에 어떤 영향을 미칩니 까?목록과 배열 사이의 선택은 큰 데이터 세트를 다루는 파이썬 응용 프로그램의 전반적인 성능에 어떤 영향을 미칩니 까?May 03, 2025 am 12:11 AM

forhandlinglargedatasetsinpython, usenumpyarraysforbetterperformance.1) numpyarraysarememory-effic andfasterfornumericaloperations.2) leveragevectorization foredtimecomplexity.4) managemoryusage withorfications data

Python의 목록 대 배열에 대한 메모리가 어떻게 할당되는지 설명하십시오.Python의 목록 대 배열에 대한 메모리가 어떻게 할당되는지 설명하십시오.May 03, 2025 am 12:10 AM

inpython, listsusedyammoryAllocation과 함께 할당하고, whilempyarraysallocatefixedMemory.1) listsAllocatemememorythanneedInitiality.

파이썬 어레이에서 요소의 데이터 유형을 어떻게 지정합니까?파이썬 어레이에서 요소의 데이터 유형을 어떻게 지정합니까?May 03, 2025 am 12:06 AM

Inpython, youcansspecthedatatypeyfelemeremodelerernspant.1) usenpynernrump.1) usenpynerp.dloatp.ploatm64, 포모 선례 전분자.

Numpy 란 무엇이며 Python의 수치 컴퓨팅에 중요한 이유는 무엇입니까?Numpy 란 무엇이며 Python의 수치 컴퓨팅에 중요한 이유는 무엇입니까?May 03, 2025 am 12:03 AM

numpyissentialfornumericalcomputinginpythonduetoitsspeed, memory-efficiency 및 comperniveMathematicaticaltions

'연속 메모리 할당'의 개념과 배열의 중요성에 대해 토론하십시오.'연속 메모리 할당'의 개념과 배열의 중요성에 대해 토론하십시오.May 03, 2025 am 12:01 AM

contiguousUousUousUlorAllocationScrucialForraysbecauseItAllowsOfficationAndFastElementAccess.1) ItenableSconstantTimeAccess, o (1), DuetodirectAddressCalculation.2) Itimprovesceeffiency theMultipleementFetchespercacheline.3) Itsimplififiesmomorym

파이썬 목록을 어떻게 슬라이스합니까?파이썬 목록을 어떻게 슬라이스합니까?May 02, 2025 am 12:14 AM

slicepaythonlistisdoneusingthesyntaxlist [start : step : step] .here'showitworks : 1) startistheindexofthefirstelementtoinclude.2) stopistheindexofthefirstelemement.3) stepisincrementbetwetweentractionsoftortionsoflists

Numpy Array에서 수행 할 수있는 일반적인 작업은 무엇입니까?Numpy Array에서 수행 할 수있는 일반적인 작업은 무엇입니까?May 02, 2025 am 12:09 AM

NumpyAllowsForVariousOperationsOnArrays : 1) BasicArithmeticLikeadDition, Subtraction, A 및 Division; 2) AdvancedOperationsSuchasmatrixmultiplication; 3) extrayintondsfordatamanipulation; 5) Ag

파이썬으로 데이터 분석에 어레이가 어떻게 사용됩니까?파이썬으로 데이터 분석에 어레이가 어떻게 사용됩니까?May 02, 2025 am 12:09 AM

Arraysinpython, 특히 Stroughnumpyandpandas, areestentialfordataanalysis, setingspeedandefficiency

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기