1. 程式人生 > 其它 >用R語言實現對不平衡資料的四種處理方法

用R語言實現對不平衡資料的四種處理方法

1.面向物件的概述

  將同一類事物的操作程式碼封裝成物件,將用到的變數和函式作為物件的屬性和方法,然後通過物件去呼叫這樣可以的屬性和方法。然後通過物件去呼叫,這樣可以使程式碼結構清晰,層次分明

2.面向物件的特徵

   1.封裝性

   2.繼承性

   3.多型性

3.物件屬性

物件屬性

(JavaScript 物件中的)名稱:值對被稱為屬性

var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
屬性 屬性值
firstName Bill
lastName Gates
age 62
eyeColor blue

 

物件方法

物件也可以有方法

方法是在物件上執行的動作

方法以函式定義被儲存在屬性中。

屬性 屬性值
firstName Bill
lastName Gates
age 62
eyeColor blue
fullName function() {return this.firstName + " " + this.lastName;}

方法是作為屬性來儲存的函式。

4.物件的定義

   物件的定義是通過“{} ”語法來實現的 物件的成員以鍵值對的形式存放在{}中 多個成員用逗號隔開,

var o1={};
var o2={name:'Jon'};
var o3={name:'Jim',age:19,genter:'男'}

5.

JS 類

JS Async

JS HTML DOM

JS Browser BOM

JS Web API

JS AJAX

JS JSON

JS vs jQuery

JS 例項

JS 參考手冊

建站手冊

JavaScript 物件

真實生活中的物件、屬性和方法

在真實生活中,汽車是一個物件

汽車有諸如車重和顏色等屬性,也有諸如啟動和停止的方法

物件 屬性 方法
 

car.name = porsche

car.model = 911

car.length = 4499mm

car.color = white

car.start()

car.drive()

car.brake()

car.stop()

所有汽車都擁有同樣的屬性,但屬性值因車而異。

所有汽車都擁有相同的方法,但是方法會在不同時間被執行。

JavaScript 物件

您之前已經學到,JavaScript 變數是資料值的容器。

這段程式碼把一個單一值(porsche)賦給名為 car 的變數

var car = "porsche";

親自試一試

物件也是變數。但是物件包含很多值。

這段程式碼把多個值(porsche, 911, white)賦給名為 car 的變數

var car = {type:"porsche", model:"911", color:"white"};

親自試一試

值以名稱:值對的方式來書寫(名稱和值由冒號分隔)。

JavaScript 物件是被命名值的容器。

物件屬性

(JavaScript 物件中的)名稱:值對被稱為屬性

var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
屬性 屬性值
firstName Bill
lastName Gates
age 62
eyeColor blue

物件方法

物件也可以有方法

方法是在物件上執行的動作

方法以函式定義被儲存在屬性中。

屬性 屬性值
firstName Bill
lastName Gates
age 62
eyeColor blue
fullName function() {return this.firstName + " " + this.lastName;}

方法是作為屬性來儲存的函式。

例項

var person = {
  firstName: "Bill",
  lastName : "Gates",
  id       : 678,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

5.this 關鍵詞

在函式定義中,this 引用該函式的“擁有者”。

在上面的例子中,this 指的是“擁有” fullName 函式的 person 物件

換言之,this.firstName 的意思是 this 物件的 firstName 屬性。

6.物件的訪問

訪問物件屬性

您能夠以兩種方式訪問屬性:

objecName.propertyName

或者

objectName["propertyName

物件成員的遍歷

var obj={name:'Tom',age:16};
for(var k in obj){
    console.log(k+'-'+obj[k]);
}

深拷貝與淺拷貝

拷貝(copy)是指將一個目標資料複製一份,形成兩個個體。在前面的開發中,若將一個
基本資料型別(數值、字元型)的變數賦值給另一個變數,就可以得到兩個值相同的變數,改變
其中一個變數的值,不會影響另一個變數的值。但是,如果操作的目標是引用資料型別(如陣列、
物件),則會出現兩個變數指向同一個物件的情況,如果改變其中一個物件的成員,另一個物件
也會發生改變。具體示例如下。

var p1={name:'Jim',age:19};
var p2=p1;
p2.name='Tom';
console.log(p1) //輸出結果。 Object {name:'Tom',age:19}
console.log(p2) //輸出結果。 Object {name:'Tom',age:19
console.log(p1===p2)

從執行結果可以看出,在將變數 p1 賦值給 p2 後,更改 p2 的成員,p1 的成員也會發生改
變。這種情況在 JavaScript 中稱之為淺拷貝( shallow copy )。例如,將上述程式碼中的物件“{name:
'Jim, age: 19)”想象成一個資料夾,該資料夾中儲存了 name 和 age 兩個檔案,而變數 p1 是鏈
接到這個資料夾的快捷方式。在執行“var p2 = p1;”操作時,是將快捷方式複製了一份,此時
兩個快捷方式指向了同一個資料夾,而不是對資料夾進行復制操作。
在實際開發中,淺拷貝可以節省記憶體開銷。因為一個物件可以儲存大量的資料,其佔用的內
存會比基本資料型別高。如果沒有淺拷貝機制,在將物件作為函式引數傳遞時,函式內部的實參
就會建立物件的副本,多佔用一份記憶體空間,尤其是進行函式巢狀呼叫或遞迴操作時,佔用空間
會越來越多。
與淺拷貝相對的是深拷貝(deep copy ),即真正建立一個物件的副本。若要實現深拷