본문 바로가기

분류 전체보기564

2장 기초사항 보호되어 있는 글 입니다. 2024. 10. 23.
데이터 프레임 필터링 방식 1. 기본적인 열 선택df[]는 기본적으로 열을 선택할 때 사용됩니다.# 하나의 열 선택df['column_name']# 여러 열 선택df[['column1', 'column2']]  2. loc[]: 명시적 인덱스 및 열 이름 사용 행 선택# 특정 인덱스(행) 선택df.loc[2012] # 2012년 데이터 선택 열 선택# 특정 열 선택df.loc[:, 'column_name'] # 모든 행에서 'column_name' 열만 선택 행과 열 동시 선택# 특정 인덱스와 열 동시 선택df.loc[2012, 'column_name'] # 2012년의 'column_name' 데이터를 선택 조건을 활용한 필터링# 조건을 활용하여 필터링df.loc[df['state/region'] == 'GA'] # 's.. 2024. 10. 17.
Quiz Session 2 - 15 왜 A0를 Serial input Left에 연결하고, A3를  Serial input Right에 연결을 할까? [Shift Left]| A₆ | A₅ | A₄ | A₃ | | A₂ | A₁ | A₀ | S(left) | [R2] [R1] 우선 Serial input의 개념에 대해서 알아야한다. Serial input이란 빈자리를 채우기 위함이다. 즉, 위의 레지스터에서 ShiftLeft를 통해서 기존의 A₀ 자리에 빈자리가 생겼다. 따라서, 이 빈자리를 Serial input채우는데, 보통 첫 레지스터의 가장 오른쪽 값이 연결된다. 따라서,  A₀ 를 연결해줄 수 있다.   [Shift Ri.. 2024. 10. 16.
[pandas] Combining Datasets 데이터를 사용하다보면 최신화된 데이터를 추가하거나 다른 데이터를 기존 데이터와 합치는 일이 많다. 이런 경우 pandas에서는 데이터 추가하는 여러 연산 메서드를 지원한다.  concat과 merge를 사용할 수 있는데, concat은 주로 행 추가 또는 열 추가를 결합하는데 사용된다. 또한, merge는 두 데이터 프레임을 공통 열 또는 공통 인덱스를 기준으로 결합한다.  concat: 주로 행 추가 또는 열추가를 결합하는데 사용하는 연산 메소드이다. 기본 값은 행 추가이며, axis='col'(2.2.2에서는 axis=1)을 하면 열 추가도 가능하다.  행 추가  열 추가   만약 인덱스가 중복되는 경우라면? concat은 index 중복여부를 검사하지 않는다. 이런 경우 verify_integrit.. 2024. 10. 16.
[pandas] Hierarchical Indexing(계층적 인덱싱) Hierarchical Indexing(계층적 인덱싱)은 여러개의 인덱스 또는 열을 가질 수 있는 기능이다.  이런 식으로 상위 계층에 a, b가 있고 하위 계층에 1, 2가 있는 인덱싱을 말한다. 이런 계층이 있는 인덱스를 다중 인덱스 (MultiIndex)라고 한다.     다중 인덱스 (MultiIndex) 생성1. 생성자 기반 생성  2. array를 통한 생성  3. tuple를 통한 생성 4. product를 통한 생성 이렇게 다중 인덱스 (MultiIndex)를 만들 수 있고 이 값을 데이터 프레임 생성할 때 index 값으로 넣어주면 된다.   물론, columns에 값을 넣어도 된다.    여기서 names는 행과 열 각각의 상위 계층, 하위 계층의 이름을 붙여준 것이이다.(사진 참고) .. 2024. 10. 15.
Coroutine(2) 2024. 10. 13.
Coroutine(1) import kotlinx.coroutines.*import java.lang.Thread.sleep/***fun main(){ GlobalScope.launch { println("Hello world!2") //코루틴에서 실행 } println("Hello world!1") //main thread에서 실행 sleep(1000)}* Hello world!1* Hello world!2**fun main(){ runBlocking { launch { //얌체 - 양보하지 않는다. println("Hello world!2") //코루틴에서 실행 } } println("Hello world!1") //main th.. 2024. 10. 13.
Array, Generic, Collection) Map Map은 딕셔너리와 비슷한데, 키와 값으로 이루어진 원소들의 모음이다. [불변 Map - mapOf()]map의 출력 방식fun main(){ val mapA: Map = mapOf("One" to 1, "Two" to 2, "Three" to 3) //키와 값을 동시에 출력 for ((k, v) in mapA) { println("($k, $v)") } //(One, 1) //(Two, 2) //(Three, 3) //키만 출력 println(mapA.keys) //[One, Two, Three] //값만 출력 println(mapA.values) //[1, 2, 3]}  키가 중복된 경우 ⭐️: 이전 값은 무시하고 새로.. 2024. 10. 13.
Array, Generic, Collection) Set Set은 순서가 없고, 중복을 허용하지 않는 원소들의 모음이다. 즉, 인덱싱이 불가하다.  [불변 Set - setOf()]Set의 size: 중복은 제거하고 요소 개수를 센다. val setA: Set = setOf(1,2,3,4,4,4)println(setA.size) // 4가 중복이기 때문에 개수는 4개    Set을 List로 변환: List로 변환하면 인덱싱도 가능해진다. val listA: List = setA.toList()println(listA) //[1, 2, 3, 4]     null 값이 있는 Set: ?를 사용해서 null 있어도 안전하게 처리해야한다.null도 중복을 허용하지 않기 때문에, 하나만 있다고 간주한다.val setA: Set = setOf("How", "Are", .. 2024. 10. 13.
Array, Generic, Collection) List Collection이란 여러 원소들의 모음이다. List는 순서가 있는 원소들의 모음이다. 즉, 인덱싱이 가능하다.  불변 List - listOf()[List와 관련된 표준 라이브러리들]val strList: List = listOf("red", "green", "blue")  sizeprintln(strList.size) //3 first, lastprintln("${strList.first()}, ${strList.last()}") //red, blue mapprintln(strList.map { it.length }) //[3, 5, 4]// 각 원소들의 길이 출력, map은 순환하는 것 filterprintln(strList.filter { it.length > 3 }) //[green, blu.. 2024. 10. 13.
Array, Generic, Collection) Generic 이터레이터 원소 출력fun main() { val intSequence: Iterable = listOf(1,2,3,4,5) val iter:Iterator = intSequence.iterator() while(iter.hasNext()){ //다음 원소가 없을 때 까지 val item = iter.next() println(item) // 1 2 3 4 5 }} 콜렉션fun main() { val intCollection: Collection = listOf(1,2,3,4,5) println(intCollection.size) //5 println(intCollection.isNotEmpty()) //true println(intCo.. 2024. 10. 13.
1~5장 교수님 블로그 1장코틀린: 진법 변환 구현 코틀린: 진법 변환 구현십진수 123을 8진수로 어떻게 변환할까요? toString(radix:Int) 함수를 사용하면 됩니다. 아주 쉽죠!fun main() { val x: Int = 123 println("$x is ${x.toString(8)} in octal representation")}라이브러리를 사용하지 않고 직접yshong60.tistory.com코틀린: package와 import(updated) 코틀린: package와 import(updated)쉽게 다가가는 최신 프로그래밍: 코틀린 - 1.2.2 라이브러리에서 import문에 대한 보충 설명입니다. 패키지(package)의 영어 단어 뜻은 꾸러미(parcel), 상자(box)이지만, 프로그래밍 언어에서 패.. 2024. 10. 12.
it과 this it: it은 람다식에서 단일 매개변수를 참조할 때 사용한다. val numbers = listOf(1, 2, 3, 4, 5)// numbers의 각 요소를 it으로 참조numbers.forEach { println(it) // 여기서 it은 리스트의 각 숫자를 가리킴}   this: this는 클래스 내부에서 자기 자신을 가르킬 때 사용한다. 주로 객체의 프로퍼티나 메서드를 참조할 때 사용한다.class Person(val name: String) { fun introduce() { println("My name is ${this.name}") // this는 현재 객체인 Person을 가리킴 }}val person = Person("Kim")person.introduc.. 2024. 10. 12.
Array, Generic, Collection) Array(2) - 배열 관련 연산 이번에는 배열과 관련된 연산들에 대해서 배워보자.배열 객체 복사배열 원소 추가배열 원소 선택(slice)배열 원소 순환(map)배열 정렬기본적으로 연산관련 메소드는 List를 대상으로 만들어진 것이기 때문에 Array의 연산을 하려면 "메소드Array" 형식으로 진행해야한다.  배열 객체 복사fun main() { val origanlArr = arrayOf(1, 2, 3) val arr1 = origanlArr // 배열 객체 자체를 복사 val arr2 = Array(origanlArr.size) { i -> origanlArr[i] } // 배열의 사이즈와 연산을 사용 val arr3 = origanlArr.clone() // 배열 객체를 복사하는 메서드 사용}  배열.. 2024. 10. 11.
Array, Generic, Collection) Array(1) - 배열의 생성 배열은 순서를 갖고있다. 따라서 정수 인덱싱이 가능하다.배열을 생성하는 방법은 총 3가지가 있다. arrayOf(), Array() + 람다식, 타입 + ArrayOf()   arrayOf()var/val 배열명: Array = arrayOf("", "", "")//타입은 생략가능var/val 배열명 = arrayOf("", "", "")  실제 사용 예시는 아래와 같다.fun main() { val strArr = arrayOf("R", "G", "B") strArr.forEachIndexed{ i, str -> print("strArr[$i] = $str, ")} // strArr[0] = R, strArr[1] = G, strArr[2] = B, }      Array() + 람다식.. 2024. 10. 11.
Class(2) - 범위 함수 범위 함수란?Kotlin에서 객체를 특정 범위(scope) 내에서 처리할 수 있게 도와주는 함수로, 객체의 컨텍스트에서 작업을 수행하는 간결한 방법을 제공한다. 주로 코드의 가독성을 높이고 객체를 효율적으로 처리하기 위해 사용된다.  범위함수에는 let, also, apply, with, run이 있다. let: 지정된 값에 대한 변환 작업을 수행하고, 결과를 반환한다.also: 지정된 값을 그대로 반환하면서, 부수적인 작업(로깅, 디버깅 등)을 수행한다. 주로, 객체를 참조하는 목적으로 사용apply: 객체의 속성을 변경하는 작업을 하고, 객체 자체를 반환한다. 주로, 객체를 참조하는 목적으로 사용with: 특정 객체에 대해 여러 작업을 수행하고, 결과를 반환한다.run: 블록 안에서 객체의 작업을 수.. 2024. 10. 11.
Class(2) - data class data class란?데이터를 저장하고 다루는 용도로 특별하게 설계된 클래스이다. 일반적인 클래스와는 다른 몇가지 자동화된 기능을 제공한다.주로 값 객체를 만들 떄 유용하다.  일반 클래스에도 equals, hashCode메소드가 있는데 뭐가 다른가?일반 클래스는 해당 값들의 주소를 비교한다. 따라서 값이 같아도 주소가 다르면 다르다고 판단한다. 하지만 data 클래스는 값을 비교하기ㄷ 때문에 주소가 달라도 값이 같다면 같다고 판단한다.  data class - toString() data class Fruit(var name: String, var sciName: String, var calories: String)fun main(){ val apple = Fruit("Apple", "학명: Ma.. 2024. 10. 11.
Class(2) - 클래스의 기본 메소드 정의 클래스의 기본 메소드를 재정의할 수 있다. toString, equals, hashCode   1. toString class Person(var name: String, var age: Int)fun main(){ val kim = Person("Kim", 18) println(kim) //Person@1be6f5c3}  원래는 이렇게 객체를 출력하면 객체이름과 이상한 값이 나온다. 이걸 toString() 메소드를 재정의해서 출력해보자.   class Person(var name: String, var age: Int) { override fun toString(): String { return "Person(name='$name', age=$age)" }}fun ma.. 2024. 10. 11.
Class(2) - Object Object란?싱글톤 객체를 정의하거나 익명 객체를 생성하며, 동반 객체를 통해 클래스이 정적 멤버처럼 사용되는 특수한 객체를 만드는 키워드이다. 즉, object를 사용해서 3개의 기능을 얻을 수 있다. 싱글톤, 동반 객체, 무명 객체 이렇게 3개의 기능이 있다.  1. object - singleton클래스는 원래 한개로 여러개의 객체를 만들 수 있다. 하지만 class 키워드 대신에, object를 사용하면 객체가 한개만 만들 수 있다. object Button { var clicked = 0 fun onClick() { clicked++ }} 이렇게 생성할 수 있다. object를 사용할 때는 객체가 하나만 생성이 되기 때문에 따로 객체를 생성하지 않고 사용할 수 있다.. 2024. 10. 11.
2024.10.11 Q&A [lecture09]  1. Deconvolution이란? : Deconvolution 분류결과를 통해서 이미지를 생성하는 것이다. 즉, 원래는 이미지를 CNN처리를 하면 이미지에 맞는 분류 결과가 온다. 이를 반대로 진행해서 분류 결과를 통해서 분류 결과에 맞는 이미지를 생성하는 것이다.  예를 들어 고양이와 강아지로 분류를 한 모델이 있다고 가정하고, 우리는 고양이에 대해서 관심이 있는 상태라고 생각해보자.그러면 강아지 관련된 뉴런의 경사는 0으로 만들고, 고양이에 대한 경사는 1로 만들어서 역전파를 진행한다. 이렇게 진행하면 아래와 같은 고양이와 닮은 약한 이미지가 생성된다.  2.  Deconvolution의 목적 위의 과정을 진행하면 결국 결과 값으로는 해당 모델이 고양이라고 생각하고 있는 이미.. 2024. 10. 11.
익명 함수 람다식은 익명함수의 하나이다. 그러면 익명함수는 뭘까?익명함수란 말 그대로 이름이 없는 함수이다. 즉 함수와 선언 방식이 비슷하다.  기본 구조: 일반 함수에서 함수명만 없애면 익명함수이다.변수명 = fun(변수1: 타입, 변수2: 타입): 반환 타입 = 함수 식   실제로 만들어보자. //[일반적인 함수]fun myPureFunc(a: Int, b: Int): Int{ return a+b}//[람다식]val myLambda:(Int, Int) -> Int = {a: Int, b: Int -> a+b}//[익명 함수]val myAnonymous = fun(a: Int, b: Int): Int = a + b 2024. 10. 11.
확장함수(Extension Funtions) 확장함수기존 클래스에 새로운 기능을 추가하는 방법이다.클래스를 수정하지 않고 새로운 메소드를 정의할 수 있게 해준다.  확장 함수의 기본 문법fun 클래스명.함수명(파라미터들): 반환타입 { // 함수의 본문}    사용 예시fun main(){ println("010-1234-5678".extract { it.isDigit() })}fun String.extract(cond: (Char) -> Boolean): String { val sb = StringBuilder() this.forEach { if (cond(it)) sb.append(it) } return sb.toString()} cond: (Char) -> Boolean은 문자 하나를 받아서 Boolean.. 2024. 10. 11.
람다식(2) - it, _ 사용 람다식의 타입 생략람다식을 선언했을 때 타입을 선언할 수 있는 경우가 있다.  타입을 생략하지 않은 경우val myLambda:(Int, Int) -> Int = {a: Int, b: Int -> a+b} 람다식 자체의 타입을 생략하는 경우 (일반적으로 많이 사용하는 경우)val myLambda = {a: Int, b: Int -> a+b} 람다식 내부 입력 변수 타입을 생략하는 경우val myLambda:(Int, Int) -> Int = {a, b -> a+b}    일반적인 함수와 람다식 사용의 차이 //일반적인 함수fun myFun(i: Int): Int = i * 10fun main() { val times = ::myFun println(times(2)) //20} //람다식fun .. 2024. 10. 10.
람다식(1) - 기본적인 선언과 호출, 고차함수와의 사용 람다식이란?람다식이란, 이름이 없는 함수를 간결하게 표현하는 방식이다. 기본 구조변수명: 입력 타입 -> 반환 타입 = {매개변수 -> 함수본문}  적당한 예시로 더하는 일반적인 함수를 람다식으로 변경해보자.//[일반적인 함수]fun myPureFunc(a: Int, b: Int): Int{ return a+b}//[람다식]val myLambda:(Int, Int) -> Int = {a: Int, b: Int -> a+b}// 타입 생략 가능val myLambda:(Int, Int) -> Int = {a, b -> a+b} 이렇게 일반적인 함수를 간단하게 함수이름 없이 람다식으로 간단하게 표현할 수 있다. 람다식의 호출 람다식을 직접 활용해서 호출하는 방법fun main() { val myLa.. 2024. 10. 10.
고차함수(2) - 응용편 고차 함수란 일급 함수라고 했다. 즉, 변수가 함수 역할을 할 수 있다. 일급 함수라는 점을 이용해서, 변수에 함수를 참조해서 변수를 통해서 해당 함수를 사용해보자. 일급 함수를 이용한 고차함수의 활용경우 - 1val strToLower: (String) -> String = String::lowercase//String 클래스의 lowercase 메소드를 사용해서 해당 메소드이 인자로 String을 전달하고 결과를 String으로 받아오는 변수val s: String = "My Lovely Baby"println(strToLower(s)) //my lovely baby 이렇게 변수가 함수 역할을 할 수 있다는 점을 이용해서 String 클래스의 lowercase 메소드를 참조하여 해당 변수를 이용해서 .. 2024. 10. 10.
고차함수(1) - 선언과 사용 고차함수란?일급 함수이면서 일급객체를 사용할 수 있는 것이다. 일급 함수란 함수가 변수 역할을 하는 것이고, 일급 객체란 함수의 실 인자로 사용할 수 있으며, 함수의 반환 값으로도 사용할 수 있는 것이다.   일반 함수와 고차함수의 차이// 일반 함수fun multiply(a: Int, b: Int): Int { return a * b} 일반 함수는 위와 같이 변수만 인자로 받아서 그 변수들을 통해 연산을 해서 값을 반환한다.  fun multiply(a: Int, b: Int, hfunc:(Int, Int) -> Int): Int { return hfunc(a, b)} 하지만 고차함수는 함수를 인자로 받을 수 있다. 즉, 인자로 전달 받은 함수와 전달 받은 변수의 값들을 이용해서 값을 반환한.. 2024. 10. 10.
Kotiln - 함수 함수의 기본 형태fun 함수이름(매개변수: 매개변수 타입) : 반환 타입 { //함수 동작}   Top-level function과 member functionclass Shape { fun calculateArea_method(w: Int, h: Int, ): Int { // member function = method return w * h }}fun calculateArea_top_level(w: Int, h: Int, ): Int { // top-level function return w * h}  Top-level function: 클래스 밖에 생성된 함수Member function: 클래스에 속한 함수 가변 인자: 인자의 개수가 달라질 수 있다. fun acc.. 2024. 10. 10.
개인_실습(DataFrame) 2024. 10. 10.
데이터 프레임 특정 열 삭제 하는 방법 df = df.drop('열 이름', axis=1) 2024. 10. 10.
[pandas] Missing value 다루기 Missing value란?: 다양한 원인으로 있는줄 알았지만 없는 데이터. 즉, NaN 또는 None Missing value 관련 내장 메소드  Missing value 탐지 Missing value가 존재하는지 - isnull()Missing value 가 없는지 - notnull()Missing value 삭제 Missing value가 있는 행을 삭제 - dropna() Missing value가 있는 열을 삭제 - dropna(aixs = 'columns') 행 또는 열이 모두 Missing value일 때, 삭제 - dropna(aixs = 'columns', how = 'all')행 또는 열의 Missing value 개수가 n개 미만일 때, 삭제 - dropna(aixs = 'column.. 2024. 10. 10.