9월7일

Yullgiii·2023년 9월 7일
0
post-thumbnail

ADsP

3과목 3장 4절 연관분석

✅ **연관분석(Association analysis)**
  • 교차판매/물건배치 등에 이용되는 분석 기법
    • 기저귀를 사는 고객은 맥주를 동시에 구매한다는 연관규칙 발견 → 인접한 진열대에 위치시켜 매출 증대를 꾀할 수 있다.
  • 고객의 과거 거래 구매 패턴을 분석하여 고객이 구매하지 않은 상품 추천
  • 상품을 구매할 때 유사한 상품을 구매한 고객들의 구매 데이터를 분석하여 쿠폰 발행
  • 장점
    • 조건반응(if then)으로 표현되는 연관규칙의 결과를 이해하기 쉽다.
    • 비목적성 분석 기법
    • 분석 계산이 간편하다.
  • 단점
    • 품목 수가 증가하면 분석에 필요한 계산은 기하급수적으로 늘어난다.
    • 너무 세분화된 품목을 가지고 연관규칙을 찾으려고 하면 의미없는 분석 결과가 나올 수도 있다.
      • 세분화 분석 품목이 필요없는 것은 아니다.
  • 시차 연관분석은 순서와 연관된 분석이 가능하다.
✅ **순차 패턴 분석**
  • 연관규칙 분석과 유사한 아이디어에서 출발하지만 시간 또는 순서에 따른 사건의 규칙을 찾는다는 점에서 다른 분석
✅ **연관규칙의 지지도, 향상도, 신뢰도**
  • 지지도(support)
    • (A와 B가 동시에 포함된 거래 수)/(전체 거래 수)
    • A, B의 교집합에 대한 확률(비율)
    • A→B라고 하는 규칙이 전체 거래 중 차지하는 비율을 통해 해당 연관 규칙이 얼마나 의미가 있는 규칙인지 확인
  • 향상도
    • 품목B를 구매한 고객 대비 품목 A를 구매한 후 품목 B를 구매하는 고객에 대한 확률
    • 향상도가 1보다 크면 이 규칙은 결과를 예측하는 데 있어 우수하다는 것을 의미한다.
    • 향상도가 1이면 두 품목은 독립적이다.
    • 향상도가 1보다 작으면 두 품목은 서로 음의 상관관계를 의미하며 연관성이 없다.
  • 신뢰도
    - 품목 A가 포함된 거래 중에서 품목 A, B를 동시에 포함하는 거래일 확률 (A를 구매한 사람이 B도 구매하는 확률)
    - A, B의 조건부 확률 : P(B|A)
✅ **Apriori 알고리즘**
  • 데이터들에 대한 발생 빈도를 기반으로 각 데이터 간의 연관관계를 밝히기 위한 방법
  • 연관규칙의 대표적인 알고리즘으로 현재도 많이 사용된다.
✅ **FP-Growth**
  • 연관분석의 대표적 알고리즘인 apriori의 단점을 보완하기 위해 트리와 노드링크라는 특별한 자료구조를 사용하는 알고리즘

회고

이로써 과목에 모든 강의는 완료되었고 많은 복습문제들과 많은 경험만이 날 자격증으로 이끌어 줄것이다!!!!!!!!!!!!!!

내일 배움 캠프

javascript

오늘은 그간 자바 스크립트에 HTML에 중점을 두고 만드는것을 해봤기에
Java에 초점을 맞추고 들어보려한다.

Java

나도 코딩님의 강의 시청

If 조건문
{
    public static void main(String[] args) {
        //조건문 If
        int hour =10; //오전 10시
        if ( hour < 14 ) {  //하나의 문자만 쓸때에는 바로 써도 되지만 두가지 이상의 문장을 쓸떄는 중괄호{}를 사용
            System.out.println("아이스 아메리카노 +1");
            System.out.println("샷추가");
        }
        System.out.println("커피 주문 완료");

        // 오후 2시 이전, 모닝커피를 마시지 않은 경우
        hour =10;
        boolean morningCoffee = false; //모닝 커피
        //if (hour < 14 && morningCoffee == false) {
        if (hour < 14 && !morningCoffee) {
            System.out.println("COFFEEEEEEEE!!!!");
        }
        System.out.println("Okey, Coffee");
        // 오후 2시 이후, 모닝커피를 마신경우
        hour =15;
        morningCoffee = true;
        if ( hour >= 14 || morningCoffee == true) {
            System.out.println("아아 디카페인");
        }
        System.out.println("오케커피");
        }
    }

package chap04;

public class _01_If {
    public static void main(String[] args) {
        //조건문 If
        int hour =10; //오전 10시
        if ( hour < 14 ) {  //하나의 문자만 쓸때에는 바로 써도 되지만 두가지 이상의 문장을 쓸떄는 중괄호{}를 사용
            System.out.println("아이스 아메리카노 +1");
            System.out.println("샷추가");
        }
        System.out.println("커피 주문 완료");

        // 오후 2시 이전, 모닝커피를 마시지 않은 경우
        hour =10;
        boolean morningCoffee = false; //모닝 커피
        //if (hour < 14 && morningCoffee == false) {
        if (hour < 14 && !morningCoffee) {
            System.out.println("COFFEEEEEEEE!!!!");
        }
        System.out.println("Okey, Coffee");
        // 오후 2시 이후, 모닝커피를 마신경우
        hour =15;
        morningCoffee = true;
        if ( hour >= 14 || morningCoffee == true) {
            System.out.println("아아 디카페인");
        }
        System.out.println("오케커피");
        }
    }
Else 조건문
_02_Else {
   public static void main(String[] args) {
       // 조건문 If Else
       int hour =10;
       if(hour < 14 ){ //오후 2시 이전 이면
           System.out.println("IceCoffee +1");
       }
       else { //그 외의 경우이면!
           System.out.println("IceCoffee de +1");
       }
       System.out.println("Okey");

       //오후 2시 이후, 모닝커피를 마신경우
       hour =15;
       boolean morningcoffee = true;
       if (hour >= 14 || morningcoffee == true){ //오후 2시 이후이거나 모닝 커피를 마신 경우
           System.out.println("icecoffee de +1");
       } else { // 그외의 경우
           System.out.println("icecoffee +1");
       }
       System.out.println("Coffeeeeeeeeee!!!!");
   }
}
else-if
_03_ElseIf {
    public static void main(String[] args) {
        //조건문 ElseIf
        //만약 에이드가 있다면 +1
        //또는 망고주스 +1
        //또는 아이스아메리카노 +1
        boolean ade = true; //에이드
        boolean Juice = true; //망고 주스
        boolean OJ = true; //오렌지 주스

        if (ade) {
            System.out.println("에이드 +1");
        } else if (Juice) {
            System.out.println("망고 주스 +1");
        } else if (OJ) { //else if 는 중간에 더 추가 가능
            System.out.println("오렌지 주스 +1");
        } else {
            System.out.println("아이스 아메리카노 +1");
        }
        System.out.println("음료 주문 완료");
    }
}
Swich Case
package chap04;

public class _04_SwichCase {
    public static void main(String[] args) {
        // Swich Case
        // 1 등 전액 장학금
        // 2 등 반액 장학금
        // 3 등 반액 장학금
        // 그 외 : 장학금 대상 아님

        // if else 문을 이용 (여러 조건 또는 범위에 해당 되는 조건)
        int ranking = 1; //등수
        if (ranking == 1) {
            System.out.println("전액");
        } else if (ranking == 2 || ranking == 3) {
            System.out.println("반액");
        } else {
            System.out.println("장학금 대상 아님");
        }
        System.out.println("조회 완료");

        //Swich Case 문을 이용 (명확한 케이스가 있는 경우)
        ranking =1;
        switch (ranking){
            case 1:
                System.out.println("전액");
                break; //문장을 탈출
            case 2 :
                System.out.println("반액");
                break;
            case 3 :
                System.out.println("반액");
                break;
            default:System.out.println("장학금 대상 아님");
        }
        System.out.println("조회완료 #2");

        //Case 2 와 3을 통합
        ranking =2;
        switch (ranking){
            case 1:
                System.out.println("전액");
                break; //문장을 탈출
            case 2 :
            case 3 :
                System.out.println("반액");
                break;
            default:System.out.println("장학금 대상 아님");
        }
        System.out.println("조회완료 #3");

        // 중고 상품의 등급에 따른 가격책정 (1급 : 최상 ,4급 : 최하)
        int grade = 1; //등급
        int price =7000; //기본 가격
        switch (grade){
            case 1:
                price += 1000;
            case 2 :
                price += 1000;
            case 3:
                price += 1000:
                break;
        }
        System.out.println(grade +"등급 제품의 가격:"+price +"원");
        // 1 등급 가격 10000원
        //2 등급 가격 9000원
    }
}

For

        //반복문 사용
        //for (선언 ;조건 ; 증감 )
        //....수행 명령.....
        for (int i = 0; i<10; i ++){
            System.out.println("어서어세!!!"+i);
        }

        //짝수만 출력
        for (int i = 0; i < 10 ; i+=2) {
            System.out.println(i);//println 에서 ln 을 빼면 한줄로 출력
        }
        //홀수만 출력
        for (int i = 1; i < 10 ; i+=2) {
            System.out.println(i);
        }
        // 거꾸로 숫자
        for (int i = 5; i > 0 ; i--) {
            System.out.println(i);
        }
        //1부터 10까지의 합 :55
        int sum =0 ;
        for (int i = 1; i < 11 ; i++) {
            sum += i;
            System.out.println(sum);
        }
        System.out.println("1부터 수의 합은:"+sum);
    }
}
while
public class _06_While {
    public static void main(String[] args) {
        //반복문 while
        int distance =25; //전체거리
        int move=0; //현재이동거리
        //while (조건){}
        while (move < distance){
            System.out.println("Movemovemove!!!!");
            System.out.println("now"+ move + "m");
            move += 3; //3m 씩 이동
        }
        System.out.println("end");
        //무한 루프
        //move=0;
        //while (move < distance){
            //System.out.println("Movemovemove!!!!");
            //System.out.println("now"+ move + "m");
Do while
public class _07_DoWhile {
    public static void main(String[] args) {
        //반복문 Dowhile (조건이 참이든 아니든 한번은 재생)_
        int distance = 25;
        int move=0;
        int height =25;
        do{
            System.out.println("let's go");
            System.out.println("now"+move);
            move+=3;
        }while (move + height<distance );
        System.out.println("arrive");
    }
}
NestedLoop (이중반복문)
public class _08_NestedLoop {
    public static void main(String[] args) {
        //이중 반복문
        //*로 사각형 만들기
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.print("*");
            }
            System.out.println(); //줄바꿈
        }
        System.out.println("-------------------------");
        //별  왼쪽 삼각형만들기
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < i + 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("-------------------------");
        //별 오른쪽 삼각형
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 4 - i; j++) {
                System.out.print(" ");
            }
            for (int k = 0; k <= i; k++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

이중 반복문으로 구구단 만들기

_09_MultipleTable {
    public static void main(String[] args) {
        //구구단
        for (int i = 2; i < 10; i++) {
            for (int j = 1; j < 10 ; j++) {
                System.out.println(i+"X"+j+"="+(i*j));
            }
            System.out.println();
        }
    }
}
break
0_Break {
    public static void main(String[] args) {
        //Break
        // 치킨을 매일 20마리만 판매 (1인당 1마리만 구매가능)

        //for
        int max = 20;
        for (int i = 1; i <= 50; i++) {
            System.out.println(i + "번 손님 주문하신 치킨나왔습니다.");
            if (i == max) {
                System.out.println("금일 마감!");
                break; //반복문 탈출
            }
        }
        System.out.println("영업을 종료합니다.");

        System.out.println("-----------------------------");
        //while
        int index =1 ;
        while (index <= 50){
            System.out.println(index+"sir");
            if(index == max){
                System.out.println("over");
                break;
            }
            index++;
            System.out.println("Bye");
        }
    }
}

Continue

11_Continue {
    public static void main(String[] args) {
        // Continue
        // NoShow
        int max =20;
        int sold =0;
        int noshow = 17;
        for (int i = 1; i <=50 ; i++) {
            System.out.println(i+"sir");
            // if noshow
            if(i == noshow){
                System.out.println(i+"you are noshow get out!!!");
                continue;
            }

            sold++;
            if(sold==max){
                System.out.println("over");
                break;
            }
            System.out.println("end");
        }
    }
}
퀴즈
//조건문을 활용하여 주자요금 정산
//주차요금은 시간당 4000원 (일 최대 30000원)
//경차 또는 장애인 차량은 최종요금에서 50% 할인
//예시 일반차량 5시간 주차시 20000원
 {
    public static void main(String[] args) {
        int hour = 5; //주차 시간
        boolean Smallcar =false; //경차
        boolean Person = false; // 장애인여부

        int fee = hour * 4000;
        // 30000원 초과시 일일 최대 요금으로 수정

        if(fee>30000){
            fee = 30000;
        }
        // 경차 또는 장애인 차량인 경우 50%할인
        if(Smallcar || Person){
           fee /=2; // 50%할인
        }
        System.out.println("주차 요금은"+fee+"원 입니다");
    }
}

Chap 04 완료

회고

많은 반복문과 많은 문법들을 본격적으로 들어가게 되었는데
아직 이중 반복문은 조금의 이해가 더 필요할듯하다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글