[Section 1] 방문자 수 예측 프로그램

JEREGIM·2023년 2월 23일
0

📌인공지능 프로그램 V1

소스코드

package com.codestates.seb.Ai_V1;

import java.util.Scanner;

public class Ai_V1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 시스템 프로그램 안내 출력문을 정의합니다.
        System.out.println("[인공지능 프로그램 V1]");
        System.out.println("=".repeat(25));
        System.out.print("예측에 영향을 주는 원인(광고비)의 값을 알려주세요(단위 원) : ");
        int adMoney = sc.nextInt();
        // 수식에 필요한 변수를 먼저 정의하여 줍니다. (※ 수식과 똑같은 변수명으로 정의 )
        // 안내 사항에 나온 것 처럼 임의의 값으로 정의합니다.
        int a = 2, b = 1;
        // 웹 페이지 방문자 수를 예측하기 위한 수식을 코드로 정의합니다.
        int preAi = a * adMoney + b;
        // 결과로 나온 값은 printf()를 통해 출력합니다.
        System.out.printf("입력된 광고비는 %d원 입니다.%n", adMoney);
        System.out.printf("AI의 예측(클릭 수)은 %d회 입니다.", preAi);
    }
}

실행 예시


📌인공지능 프로그램 V2

소스코드

package com.codestates.seb.Ai_V2;

import java.util.Scanner;

/**
 * 해당 프로그램은 예측에 필요한 a, b를 사용자가 입력하도록 합니다.
 * 해당 프로그램은 하나의 값이 아닌 다수의 값을 입력받고 다수의 예측을 수행하도록 합니다.
 */
public class Ai_V2 {
    public static void main(String[] args) {
        // 사용자의 입력을 받기 위한 Scanner 객체를 생성합니다.
        Scanner sc = new Scanner(System.in);
        // 시스템 시작 안내 문구
        System.out.println("[인공지능 프로그램 V2]");
        System.out.println("=".repeat(25));
        System.out.print("a 값을 입력해주세요 : ");
        int a = sc.nextInt();
        System.out.print("b 값을 입력해주세요 : ");
        int b = sc.nextInt();
        // 이전 버전과 달리 다수의 '광고비'를 '배열'로 정의합니다.
        System.out.print("입력할 광고비의 개수를 정해주세요. : ");
        int count = sc.nextInt();
        double[] adMoney = new double[count];

        System.out.println("광고비를 입력해주세요.");
        for (int idx = 0; idx < adMoney.length; idx++) {
            System.out.printf("%d번 째 입력 : ", idx + 1);
            adMoney[idx] = sc.nextDouble();
        }
        // 반복문을 활용하여 광고비 배열을 출력합니다.
        System.out.println("입력된 광고비는 다음과 같습니다.");
        for (int i = 0; i < adMoney.length; i++) {
            System.out.printf("%d번 째 : %.1f원 ", i + 1, adMoney[i]);
        }
        // 한 줄 띄기 및 예측 결과 안내 문구 출력
        System.out.printf("%n%n");
        System.out.println("AI의 웹 페이지 방문자 수 예측 결과는 다음과 같습니다.");
        // 반복문을 활용해 다수의 광고비를 호출하여 방문자 수 예측값을 연산합니다.
        for (int i = 0; i < adMoney.length; i++) {
            System.out.printf("%d번 째 예측 : %.1f회 방문%n", i + 1, a * adMoney[i] + b);
        }

    }
}

실행 예시


📌인공지능 프로그램 V3

소스코드

package com.codestates.seb.Ai_V3;

import java.util.Scanner;

public class Ai_V3 {
    public static void main(String[] args) {
        // 프로그램 안내 문구 출력
        System.out.println("[인공지능 프로그램 V3]");
        System.out.println("=".repeat(25));

        // 입력 받을 값 : a, b, 광고비의 개수, 광고비의 값, 실제 데이터 값
        Scanner sc = new Scanner(System.in);
        System.out.print("a 값을 입력해주세요 : ");
        int a = sc.nextInt();
        System.out.print("b 값을 입력해주세요 : ");
        int b = sc.nextInt();
        // 이전 버전과 달리 다수의 '광고비'를 '배열'로 정의합니다.
        System.out.print("입력할 광고비의 개수를 정해주세요. : ");
        int count = sc.nextInt();

        double[] adMoney = new double[count];

        System.out.println("광고비를 입력해주세요.");
        for (int idx = 0; idx < adMoney.length; idx++) {
            System.out.printf("%d번 째 입력 : ", idx + 1);
            adMoney[idx] = sc.nextDouble();
        }

        double[][] xy_lists = new double[count][2];

        System.out.println("실제 방문자 수 데이터를 입력해주세요.");
        for (int i = 0; i < xy_lists.length; i++) {
            System.out.printf("%d번 째 실제 방문자 수 데이터 : ", i + 1);
            xy_lists[i][0] = sc.nextDouble();
        }

        // AI 예측 방문자 수 데이터 2차원 배열에 저장
        for (int i = 0; i < xy_lists.length; i++) {
            xy_lists[i][1] = a * adMoney[i] + b;
        }
        // 실제 데이터 값과 AI 예측 값 출력
        System.out.println();
        System.out.println("인공지능 프로그램에 할당된 데이터");
        for (int i = 0; i < xy_lists.length; i++) {
            System.out.printf("%d번 째 데이터) 실제 방문자 수 데이터 : %.1f, AI 예측 방문자 수 데이터 : %.1f%n", i + 1, xy_lists[i][0], xy_lists[i][1]);
        }

        double diff_pow;
        double sum_diff_pow = 0.0;

        // 실제 데이터의 예측 데이터의 오차, 오차의 제곱, 오차의 제곱 합 출력
        System.out.println();
        for (int i = 0; i < xy_lists.length; i++) {
            System.out.printf("[%d번 째 데이터] 실제 값과 예측 값의 오차 : %.1f%n", i + 1, xy_lists[i][0] - xy_lists[i][1]);
            diff_pow = Math.pow(xy_lists[i][0] - xy_lists[i][1], 2);
            System.out.printf("오차 값의 제곱 : %.1f%n", diff_pow);
            sum_diff_pow += diff_pow;
        }

        System.out.println("=".repeat(25));
        System.out.printf("인공지능 프로그램의 성능(오차의 제곱 합) : %.1f", sum_diff_pow);

    }
}

실행 예시

입력 받을 값 : a, b, 광고비의 개수, 광고비, 실제 방문자 수 데이터

출력 값 : 실제 방문자 수 데이터, AI 예측 데이터, 오차, 오차의 제곱, 오차의 제곱 합

0개의 댓글