JavaScript 개발자로서 머신러닝에 뛰어드는 것은 생각보다 어렵지 않습니다. Node.js 패키지로 모든 것을 처리하는 것이 기술적으로 가능하지만 Python ML 생태계는 무시하기에는 너무 풍부하고 잘 확립되어 있습니다. 게다가 Python은 작업하기에 아주 좋습니다. 따라서 백엔드에서 무거운 작업을 수행하려면 Python을 사용하는 것이 합리적입니다. 모델이 준비되면 프런트엔드 친화적인 형식으로 내보내고 클라이언트에 로드하여 예측을 실행할 수 있습니다.
이번 게시물에서는 트위터 팔로워 수를 기준으로 아티스트의 인기를 예측하는 모델을 구축해 보겠습니다.
첫 번째 단계는 데이터세트를 확보하는 것입니다. 이 프로젝트에서는 다음과 같은 Artist.csv 파일을 사용합니다:
twitter_followers,popularity,handle 111024636,94,justinbieber 107920365,91,rihanna 106599902,89,katyperry 95307659,97,taylorswift13 66325495,87,selenagomez 66325135,71,selenagomez 60943147,83,jtimberlake 54815915,82,britneyspears 53569307,85,shakira
보시다시피 여기에는 twitter_followers와 인기라는 두 가지 핵심 값이 있습니다. 이는 x가 twitter_followers이고 y가 인기가 되는 시퀀스 모델을 훌륭하게 설정합니다.
시퀀스 모델은 모델을 구축하는 가장 쉬운 옵션 중 하나입니다. 선택은 궁극적으로 특정 사용 사례에 따라 다르지만 지금은 단순하게 유지하고 이 접근 방식을 고수하고 있습니다.
모델을 구축할 때 처리해야 할 몇 가지 기본 작업이 있습니다.
다음 코드는 전체 그림은 아니지만 이러한 작업에 대한 좋은 개요를 제공합니다. 전체 코드는 Github에서 확인하실 수 있습니다.
def get_model(x, y): x_normalized = layers.Normalization( axis=None, ) x_normalized.adapt(np.array(x)) model = tensorflow.keras.Sequential([x_normalized, layers.Dense(units=1)]) model.compile( optimizer=tensorflow.keras.optimizers.Adam(learning_rate=0.1), loss="mean_squared_error", ) model.fit( x, y, epochs=2, verbose=0, validation_split=0.2, ) return model def main: train_features, test_features, train_labels, test_labels = split_data(dataset) model = get_model( train_features["twitter_followers"], train_labels, ) test_loss = model.evaluate( test_features["twitter_followers"], test_labels, verbose=2 ) model.export("./saved_model")
보시다시피 Python 코드는 매우 간단합니다. 데이터 분할, 모델 가져오기, 평가 및 최종 저장을 처리하는 주요 기능이 있습니다.
간단히 말하면 모델을 만드는 데 필수적인 단계입니다. 하지만 현실적으로 생각해 봅시다. 실제로 작동하는 모델을 구축하는 것은 예술이자 과학입니다. 여기서 나의 목표는 Python을 시작하는 것이 얼마나 쉬운지 보여주는 것입니다. 그러나 탄탄한 데이터세트 보유, 데이터 정리 및 정규화, 올바른 모델 및 설정 선택, 모델 훈련을 위한 컴퓨팅 성능 확보 등 잘 수행되는 모델을 만드는 데는 많은 노력이 필요합니다. 이 모든 작업에는 상당한 시간과 노력의 투자가 필요합니다!
이제 모델을 훈련하고 저장했으므로 이를 프런트엔드로 가져올 차례입니다. 이 단계에서는 웹에 적합한 형식으로 모델을 로드하여 브라우저에서 바로 예측을 실행할 수 있습니다. TensorFlow.js를 사용하든 다른 라이브러리를 사용하든 머신러닝을 웹 앱에 통합하면 가능성의 세계가 열립니다. 그 방법을 자세히 알아보겠습니다!
TensorFlow는 저장된 모델을 JSON 및 바이너리로 변환하는 데 도움이 되는 tensorflowjs_converter라는 npm 패키지를 제공합니다.
tensorflowjs_converter --input_format=tf_saved_model model/saved_model out/public
ls -la out/public group1-shard1of1.bin model.json
이 설정을 사용하면 웹 애플리케이션에 필요한 파일에 쉽게 액세스할 수 있습니다.
Github에서 전체 코드를 확인하실 수 있습니다.
const model = await tensorflow.loadGraphModel("model.json"); const getPopularity = (followers) => { const followers = 1_000; const normalized = followers; const x = tensorflow.tensor(normalized).reshape([-1, 1]); const result = model.predict(x); const values = result.arraySync(); const y = values[0][0].toFixed(2) * 100; const popularity = y; return popularity; };
앞서 언급했듯이 이 모델은 트위터 팔로어 수를 기반으로 '인기 예측'을 목표로 합니다. 간단한 예처럼 보일 수 있지만 백엔드에서 모델을 생성하고 프런트엔드에서 사용하는 방법을 효과적으로 보여줍니다.
getPopularity가 입력을 처리하는 방법을 살펴보세요. 핵심 라인은 모델을 사용하여 입력 x를 기반으로 값(y)을 예측하는 model.predict(x)입니다.
데모 페이지로 가서 몇 가지 Twitter 핸들을 사용해 보세요. 모델이 팔로어 수를 기반으로 인기를 어떻게 예측하는지 보는 재미있는 방법입니다.
TensorFlow는 백엔드 및 프런트엔드 개발을 위한 도구를 제공하는 멋진 라이브러리입니다. 모든 JavaScript 개발자는 Python 또는 유사한 언어를 사용하여 모델을 생성한 다음 예측 실행을 위해 해당 모델을 프런트엔드로 쉽게 가져올 수 있습니다.
머신러닝은 많은 지식이 필요한 광범위한 분야이지만 TensorFlow와 같은 도구는 소프트웨어와 머신러닝 개발자 간의 격차를 해소하는 데 도움이 됩니다. ML을 프로젝트에 통합하려는 사람들의 여정이 훨씬 더 원활해집니다!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3