본문 바로가기
IT/오랫만코딩:파이썬

DAY 09 머신러닝 관련 Bing 챗(chat) GPT 생성한 파이썬 코드 및 동일 절차 Weka 실행

by 자바라머신러닝 2023. 3. 16.

머신러닝으로 진입한 교육과정 중 기억나는 부분을 정리하기 위해 또 다시  Bing 챗(chat) GPT 로 코드를 생성하고 필자의 주관심사인 Java Weka 실행 절차를 문의하고 답을 얻었습니다. 파이썬의 최대 장점은 많은 레퍼런스(참조) 인데 이제 챗(chat) GPT 가 있으니 레퍼런스를 찾을 필요 없군요.
 

파이썬 :  Seaborn 제공 유방암 데이터 SVM 학습 코드 (데이터 척도 평준화, 하이퍼라라메터 생성)

Bing 챗(chat) GPT에게 아래와 같이 질문하였습니다.
 
질문)
파이썬 seaborn 에서 제공하는 유방암 데이타를 min max.scaling 을한후
 하이파파라메터를.search gird로 찾으면서
svm.모델로 학습하고 평가하는
파이썬 코드 생성
 

답변)

 

import seaborn as sns
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import MinMaxScaler
from sklearn.svm import SVC

# Load the breast cancer dataset
data = load_breast_cancer()

# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.3, random_state=42)

# Create a pipeline with MinMaxScaler and SVM
pipe = Pipeline([('scaler', MinMaxScaler()), ('svm', SVC())])

# Define the hyperparameters to search
param_grid = {'svm__C': [0.1, 1, 10, 100], 'svm__gamma': [0.1, 1, 10, 100]}

# Perform a grid search to find the best hyperparameters
grid_model = GridSearchCV(pipe, param_grid, cv=5)
grid_model.fit(X_train, y_train)

# Print the best hyperparameters
print(grid_model.best_params_)

# Evaluate the model on the test set
print(grid_model.score(X_test, y_test))


 

Java Weka : Seaborn 제공 유방암 데이터 SVM 학습 과정 (데이터 척도 평준화, 하이퍼라라메터 생성)

Bing 챗(chat) GPT에게 아래와 같이 질문하였습니다.
 
질문)
파이썬 seaborn.에서 제공하는 유방암 데이타를 weka 에서 min max.scaling 을한후
하이파파라메터를 찾으면서
svm 모델로 학습하고 평가하는 방법은?
 

Weka 활용 방법 질문/답변
Weka 활용 방법 질문/답변


답변)

1. weka를 실행하고 Explorer를 선택합니다.
2. Open file... 버튼을 클릭하여 seaborn에서 제공하는 유방암 데이터 파일을 불러옵니다. 파일 형식은 csv 또는 arff 등이 가능합니다.
3. Preprocess 탭에서 Normalize 필터를 적용하여 데이터의 범위를 0과 1 사이로 조정합니다¹². 필터의 옵션으로 scale과 translation 값을 설정할 수 있습니다³.
4. Classify 탭에서 SMO 알고리즘을 선택하여 svm 모델을 구성합니다⁴. SMO는 Sequential Minimal Optimization의 약자로, svm의 하나의 구현 방법입니다.
5. More options... 버튼을 클릭하여 GridSearch 메타 분류기를 적용하여 최적의 하이퍼파라미터를 찾습니다⁴. GridSearch는 C와 gamma와 같은 하이퍼파라미터에 대해 여러 가지 값을 시도하면서 검증 점수가 가장 높은 조합을 선택하는 방법입니다⁶.
6. Start 버튼을 클릭하여 모델을 훈련시킵니다. 훈련 결과에는 최적의 하이퍼파라미터와 검증 점수가 출력됩니다⁴.
7. Supplied test set 라디오 버튼을 선택하고 Set... 버튼을 클릭하여 테스트셋 파일을 지정합니다. More options... 버튼에서 Output predictions 체크 박스를 선택하고 OK 버튼을 클릭합니다.
8. Start 버튼을 클릭하여 모델을 평가합니다. 평가 결과에는 테스트셋에 대한 정확도와 예측값이 출력됩니다.
 
 
참조

더보기


다음은 이 과정을 담은 스크린샷의 예시입니다.

![weka_svm_example.png](https://i.imgur.com/9QyZUfP.png)

출처: Bing과의 대화, 2023. 3. 16.(1) How to Normalize and Standardize Your Machine Learning Data in Weka.machinelearningmastery.com="" normalize-standardize-machine-learning-data-weka="" "="">https://machinelearningmastery.com/normalize-standardize-machine-learning-data-weka/" target="_blank" rel="noopener" data-mce-href=" https://machinelearningmastery.com/normalize-standardize-machine-learning-data-weka/"> https://machinelearningmastery.com/normalize-standardize-machine-learning-data-weka/ 액세스한 날짜 2023. 3. 16..
(2) normalization - Weka normalizing columns - Stack Overflow.stackoverflow.com="" questions="" 2271203="" weka-normalizing-columns"="">https://stackoverflow.com/questions/2271203/weka-normalizing-columns" target="_blank" rel="noopener" data-mce-href=" https://stackoverflow.com/questions/2271203/weka-normalizing-columns"> https://stackoverflow.com/questions/2271203/weka-normalizing-columns 액세스한 날짜 2023. 3. 16..
(3) [Numpy] MinMaxScaler(0~1 스케일링) : 네이버 블로그.m.blog.naver.com="" wideeyed="" 221614354947"="">https://m.blog.naver.com/wideeyed/221614354947" target="_blank" rel="noopener" data-mce-href=" https://m.blog.naver.com/wideeyed/221614354947"> https://m.blog.naver.com/wideeyed/221614354947 액세스한 날짜 2023. 3. 16..
(4) 시각화로 설명 된 SVM 하이퍼 파라미터.ichi.pro="" ko="" sigaghwalo-seolmyeong-doen-svm-haipeo-palamiteo-22257741819931"="">https://ichi.pro/ko/sigaghwalo-seolmyeong-doen-svm-haipeo-palamiteo-22257741819931" target="_blank" rel="noopener" data-mce-href=" https://ichi.pro/ko/sigaghwalo-seolmyeong-doen-svm-haipeo-palamiteo-22257741819931"> https://ichi.pro/ko/sigaghwalo-seolmyeong-doen-svm-haipeo-palamiteo-22257741819931 액세스한 날짜 2023. 3. 16..
(5) [딥러닝] 딥러닝에 사용되는 Hyperparameter 알아보기.velog.io="" @jihyeon9975="" %eb%94%a5%eb%9f%ac%eb%8b%9d-%eb%94%a5%eb%9f%ac%eb%8b%9d%ec%97%90-%ec%82%ac%ec%9a%a9%eb%90%98%eb%8a%94-%eb%a7%a4%ea%b0%9c%eb%b3%80%ec%88%98-%ec%95%8c%ec%95%84%eb%b3%b4%ea%b8%b0"="">https://velog.io/@jihyeon9975/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%97%90-%EC%82%AC%EC%9A%A9%EB%90%98%EB%8A%94-%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0" target="_blank" rel="noopener" data-mce-href=" https://velog.io/@jihyeon9975/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%97%90-%EC%82%AC%EC%9A%A9%EB%90%98%EB%8A%94-%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0"> https://velog.io/@jihyeon9975/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%97%90-%EC%82%AC%EC%9A%A9%EB%90%98%EB%8A%94-%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0 액세스한 날짜 2023. 3. 16..
(6) 서포트 벡터 머신(SVM, Support Vector Machine) [내가 공부한 머신러닝 ....blog.naver.com="" postview.naver?blogid="gdpresent&logNo=221723178689"">https://blog.naver.com/PostView.naver?blogId=gdpresent&logNo=221723178689" target="_blank" rel="noopener" data-mce-href=" https://blog.naver.com/PostView.naver?blogId=gdpresent&logNo=221723178689"> https://blog.naver.com/PostView.naver?blogId=gdpresent&logNo=221723178689 액세스한 날짜 2023. 3. 16..

Java Weka : Seaborn 제공 유방암 데이터 SVM 학습 코드 (데이터 척도 평준화, 하이퍼라라메터 생성)

파이썬 seaborn.에서 제공하는 유방암 데이타를 min max.scaling.을.한후 하이파파라메터를 찾으면서 svm.모델로 학습하고 평가하는.방법 weka api 를 활용하는 java 코드 작성


Weka API 활용 Java 코드 생성 질문/답변
Weka API 활용 Java 코드 생성 질문/답변




파이썬 seaborn에서 제공하는 유방암 데이터를 min max scaling 한 후 하이퍼파라미터를 찾으면서 svm 모델로 학습하고 평가하는 방법을 weka api를 활용하는 java 코드로 작성하시려는 거군요. 그러면 다음과 같은 순서로 코드를 작성할 수 있습니다.

1. weka.jar 파일을 다운로드하고 클래스패스에 추가합니다³¹. 이 파일은 weka api의 모든 클래스와 메소드를 포함합니다.
2. weka.core.converters 패키지의 ConverterUtils.DataSource 클래스를 사용하여 seaborn에서 제공하는 유방암 데이터 파일을 읽어옵니다³. 파일 형식은 csv 또는 arff 등이 가능합니다.
3. weka.filters.unsupervised.attribute 패키지의 Normalize 클래스를 사용하여 데이터의 범위를 0과 1 사이로 조정합니다². 필터의 옵션으로 scale과 translation 값을 설정할 수 있습니다³.
4. weka.classifiers.functions 패키지의 SMO 클래스를 사용하여 svm 모델을 구성합니다. SMO는 Sequential Minimal Optimization의 약자로, svm의 하나의 구현 방법입니다.
5. weka.classifiers.meta 패키지의 GridSearch 클래스를 사용하여 최적의 하이퍼파라미터를 찾습니다. GridSearch는 C와 gamma와 같은 하이퍼파라미터에 대해 여러 가지 값을 시도하면서 검증 점수가 가장 높은 조합을 선택하는 방법입니다.
6. buildClassifier 메소드를 호출하여 모델을 훈련시킵니다. 훈련 결과에는 최적의 하이퍼파라미터와 검증 점수가 출력됩니다.
7. evaluateModel 메소드를 호출하여 모델을 평가합니다. 평가 결과에는 테스트셋에 대한 정확도와 예측값이 출력됩니다.

다음은 이 과정을 담은 java 코드의 예시입니다.

 

 


```java
// Importing required packages
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;
import weka.filters.Filter;
import weka.filters.unsupervised.attribute.Normalize;
import weka.classifiers.functions.SMO;
import weka.classifiers.meta.GridSearch;
import weka.classifiers.Evaluation;

public class WekaSVMExample {

    public static void main(String[] args) throws Exception {
        // Loading the data file
        DataSource source = new DataSource("breast_cancer.csv"); // 파일경로 변경 필
        Instances data = source.getDataSet();
        
        // Setting the class attribute
        if (data.classIndex() == -1) {
            data.setClassIndex(data.numAttributes() - 1);
        }
        
        // Applying min max scaling filter
        Normalize filter = new Normalize();
        filter.setInputFormat(data);
        filter.setScale(1); // setting scale to 1
        filter.setTranslation(0); // setting translation to 0
        Instances scaledData = Filter.useFilter(data, filter);
        
        // Creating svm model with grid search for hyperparameters
        SMO smo = new SMO(); // creating a SMO classifier object
        GridSearch gridSearch = new GridSearch(); // creating a GridSearch meta classifier object
        gridSearch.setClassifier(smo); // setting the base classifier as SMO
        
        // Setting the grid search parameters for C and gamma
        gridSearch.setXProperty("classifier.c"); // setting C as x-axis property
        gridSearch.setYProperty("classifier.kernel.gamma"); // setting gamma as y-axis property
        
        gridSearch.setXMin(0.01); // setting minimum value of C as 0.01
        gridSearch.setXMax(10); // setting maximum value of C as 10
        gridSearch.setXStep(0.01); // setting step size of C as 0.01
        
        gridSearch.setYMin(0.01); // setting minimum value of gamma as 0.01
        gridSearch.setYMax(10); // setting maximum value of gamma as 10
        gridSearch.setYStep(0.01); // setting step size of gamma as 0.01
        
        // Building the model with grid search
        gridSearch.buildClassifier(scaledData);
        
        // Printing the best hyperparameters and validation score
        System.out.println("Best C: " + gridSearch.getValues()[0]);
        System.out.println("Best gamma: " + gridSearch.getValues()[1]);
        System.out.println("Best validation score: " + gridSearch.getMeasure());
        
        // Loading the test set file
        DataSource testSource = new DataSource("breast_cancer_test.csv");
        Instances testData = testSource.getDataSet();
        
        // Setting the class attribute for test set
        if (testData.classIndex() == -1) {
            testData.setClassIndex(testData.numAttributes() - 1);
        }
        
        // Applying min max scaling filter to test set with same parameters as training set
        Normalize testFilter = new Normalize();
        testFilter.setInputFormat(testData);
        testFilter.setScale(filter.getScale()); // setting scale to same value as training filter
        testFilter.setTranslation(filter.getTranslation()); // setting translation to same value as training filter
        Instances scaledTestData = Filter.useFilter(testData, testFilter);
        
        // Evaluating the model on test set
        Evaluation eval = new Evaluation(scaledData);
        
        // Setting output predictions option to true
        eval.setOutputDetailedInfo(true);
        eval.setOutputForMatlab(true);
        eval.setOutputPredictions(true);

        // Evaluating the model and printing the results
        eval.evaluateModel(gridSearch, scaledTestData);
        System.out.println(eval.toSummaryString());
        System.out.println(eval.predictions());
    }
}

더보기

출처: Bing과의 대화, 2023. 3. 16.(1) How to Use Weka Java API? - GeeksforGeeks.www.geeksforgeeks.org="" how-to-use-weka-java-api="" "="">https://www.geeksforgeeks.org/how-to-use-weka-java-api/" target="_blank" rel="noopener" data-mce-href=" https://www.geeksforgeeks.org/how-to-use-weka-java-api/"> https://www.geeksforgeeks.org/how-to-use-weka-java-api/ 액세스한 날짜 2023. 3. 16..
(2) java - How to use SVM in Weka? - Stack Overflow.stackoverflow.com="" questions="" 18410900="" how-to-use-svm-in-weka"="">https://stackoverflow.com/questions/18410900/how-to-use-svm-in-weka" target="_blank" rel="noopener" data-mce-href=" https://stackoverflow.com/questions/18410900/how-to-use-svm-in-weka"> https://stackoverflow.com/questions/18410900/how-to-use-svm-in-weka 액세스한 날짜 2023. 3. 16..
(3) GitHub - charlesSeek/weka-example: java code example using weka library.github.com="" charlesseek="" weka-example"="">https://github.com/charlesSeek/weka-example" target="_blank" rel="noopener" data-mce-href=" https://github.com/charlesSeek/weka-example"> https://github.com/charlesSeek/weka-example 액세스한 날짜 2023. 3. 16.. 

강평

Bing 챗(chat) GPT 가 강력한 레퍼런스를 대체하는 것을 알 수 있었습니다. 저 위에 과정을 2분만에 찾았으니까요. 그리고 pc 보다는 모바일 버전이 답변 만족도가 높습니다

댓글