#M&P Compact Training
Explore tagged Tumblr posts
Text
#Smith & Wesson Trainer Barrel#M&P Compact Training#CoolFire Trainer Barrel#Pistol Training Accessories#Recoil Simulation Trainer#Safe Firearm Training#Compact Handgun Barrel#Dry Fire Practice
0 notes
Text
Rose Garden - Part Two
↳Pairing: Prince!Lee Know x Maid!afab reader
↳Words: 12,500~ (oops)
↳Warnings: SMUT obviously so as always minors DNI, unprotected sex (don't do this! but its not like these two had any other choice), p in v sex, oral (m and f receiving), fingering (f receiving), creampie, overall very vanilla stuff. Mentions of nausea but no one does on-screen. (For someone with emetophobia, I write about nausea a lot). Pregnancy scare?, ANGST
If there's anything else I missed, let me know!
TAGLIST: @ohmy-moonlightx , @junebug032 , @giyusatorou , @skzfelixlove , @kittkat44 , @nap-of-a-starr, @ventitto , @blankdyean , @lethallyprotected , @poisonivy21 , @nobody3210 , @chuuswifereal , @hisokasimp1, @lookitsjess
(Strikethrough means unable to tag, if I forgot someone or would like to be added then please let me know!)
↳Notes: I finished this first week of May then got taken out by a mystery illness for basically the whole month (respiratory infection I think). Anyway, today is my 27th birthday so I am giving all of you a gift!
PART ONE
↳Ready on my AO3: Here
“CAN’T YOU BE more gentle?” You groaned as your ribcage tightened. With every tug of the laces on that infernal corset, your ribs condensed and your breasts swelled. You could have sworn that a seamstress could thread you through a needle at this rate. You often wore a corset of your own to work, but it was more for general support than to actually suck you into the point of suffocation. The whale bone threaded through the offensive garment assured you that once you were in, nothing would move.
“That’s how this works, Y/N. You should know, you entrap me in my corset every morning.” Joy muttered through gritted teeth. Her fingers worked on the laces to make sure they were perfectly snug and not going anywhere. “It’s not so bad once you get used to it.”
“I can hardly breathe.” You gasped out.
“Maybe so but you will be the picture of perfection. This dress is going to look amazing on you.” Joy promised.
Your eyes darted to the dress laid out on the bed. For the day, the queen had assigned guest quarters to every visiting lady with the invitation to spend the night if it fit in the travel plans. Joy, of course, had jumped at the opportunity for a night away from home. Especially if that night was to be spent dancing away at the palace. That meant the pair of you had a private bedroom that could be used to change your identity. The grand four-poster bed was large enough to sleep four comfortably. You had a feeling that she would insist on sharing the bed with you. Poor thing never did like sleeping alone. You didn’t mind.
“What is wrong with you?” You panted. Your lungs worked overtime to get used to being in such a compact space. “How can you people wear this all the time?”
“They train us young.” Joy muttered. “Aha! Done! Let’s get you into this gown, shall we?”
Before you knew it, you were drowning in a sea of blue and pink fabric. The skirts were never ending and created a full ball gown silhouette, though your bone underskirt held most of the fabric away from your legs. The gown was made of rich peacock-blue silk and layers of delicate tulle that sparkled and shimmered under the light.�� Silver lace appliques decorated the bodice and the top half of the skirt. Some light tulle fabric hung just off your shoulders, creating a sweetheart off-the-shoulder neckline. You had to admit that the colors were absolutely stunning. It didn’t feel right that someone like you should wear a gown so beautiful.
However, once the garment was secured in place with some lacing, you fell in love with it. The gown hugged your waist and pushed your breasts up just enough. The skirts swished when you moved and glittered in the light.
“Y/N,” Joy breathed, “You look beautiful. Come, let me do your hair and put on your jewelry.”
“Shouldn’t I be the one getting you ready?” You asked as Joy guided you to sit down at the vanity.
“There is time for that. There’s no harm in being a little late if we need to. The ball will undoubtedly go all night.” Joy waved it off. She pointed at a hairbrush on the table and you passed it over your shoulder to her. “All of that playing dress up when we were kids was totally worth it.”
“Ow…” You muttered under your breath as Joy brushed out the tangles in your hair.
“I wonder who the Queen chose to be the princess. Surely it’s not me or we would have received some sort of notification.” Joy mused as she ran the brush through your hair. “I wonder why they would have all of these lavish parties if they’re not going to choose one of the ladies who attends them. Whoever the princess is surely is very lucky. Prince Minho is quite handsome and I’m sure he will make beautiful babies and-”
“Miss Joy. My apologies but I’m nervous enough as it is. I’m terrified of being in the same room as the prince.” You cut her off, wincing as you did so. Your training clearly specified never to interrupt your lady but all this talk of Prince Minho marrying someone else was beginning to make your heart feel heavy in your chest.
You hadn’t found the time to tell Joy about what happened. You wanted to scream it out to the world that Prince Minho was your soulmate but there was no telling if anyone would even believe you. When you first met him, he was trying to escape from his duty but after he fucked you he dove head-first into it. You wondered if someone could die from having their soulmate marry someone else.
In the end, it would all come down to if Prince Minho would confirm the fact that you were soulmates. If he were to deny you then you would have to live your life without your other half. The difference in status would make any kind of relationship difficult regardless of Prince Minho’s feelings.
You weren’t sure if you had the strength to go through with this facade but you were already dressed. You’d already made the decision. You couldn’t back down now. The dress was on and Joy was carefully putting your hair in a simple updo. She took a few pins from the hair kit you brought for her. Each pin had a diamond on the end. The hairdo you had planned for Joy would use most of the pins, so as she worked on your hair you tried to think of what style you could do instead.
“Y/N, are you okay? Your head is up in the clouds.” Joy’s voice softened.
“Yes, miss. I am merely thinking about what hairstyle to do for you.”
“No, I don’t think you are. You’ve been gone since Prince Minho’s appearance at tea. Are you alright?”
“Miss… I don’t know. I feel strange. I think me coming with you was a terrible idea.”
“What? How could you say that! I don’t know what I would do without you by my side!.”
“If I hadn’t come then I never would have-” You paused to blink back your tears. Joy paused her styling with a quiet gasp, “I never would have met…”
“Who is it?” Joy whispered knowingly.
“I can’t tell you. It would ruin...”
“Y/N, dear, please tell me.” Joy moved to your side and bent over to be at your level, “I promise there is nothing you could say that would make me think less of you.”
“It’s not me it would ruin. It’s him. He and I can never be together.”
“Y/N, please.” Joy reached up and gently brushed away a few of the tears that had escaped your eyes. You couldn’t stop crying. “Tell me and maybe I can help you.”
You looked her in the eye, hoping that maybe she could read your mind. You and Joy had been friends for as long as you could remember. You grew up in the same house. Your mother was Joy’s mother’s maid. You, in turn, became Joy’s. Even as a maid, Joy always preferred to treat you as a friend.
To no avail. Joy remained clueless.
“He’s…” you took a deep breath, “My soulmate is… Prince Minho.”
Joy’s jaw dropped. She stumbled back a bit and sat down hard on the bed. She stared at you with wide eyes. If only, that made you cry harder. At this rate she would never allow you to go to the ball. Who in their right mind would let you attend a ball when your soulmate was the prince?
“Do not lie to me, Y/N.” Joy warned.
“Have you ever known me to lie to you?”
“I suppose not. You’re sure it’s him?”
“After what we did in the garden, I would know him anywhere.”
“My god, you performed the soulmate act already?” Joy gawked, her eyes swimming with questions. “Tell me everything.”
“I don’t know…”
“I am asking as a friend, Y/N, but I will ask as your lady if I have to.”
“Okay, well… I wandered off. I didn’t mean to! But I needed a break from the sun and-”
You told her the story from beginning to finish. Meeting him in the garden and thinking he was the gardener, the accidental touch, the intensity of the soulmate act, and the way he’d turned cold afterwards. You explained how you’d searched for him and how your stomach had churned when he was announced as the Prince.
“It’s all hopeless!” You wailed, dropping your tear-stained cheeks into your hands, “We can never be together. After tonight I may never see him again!”
“Perhaps not… But what say you to see if we can get you two to meet one last time. At least share some words, a kiss, something!”
“How would we do that? He doesn’t know who I am. He doesn’t know my name or anything.”
“You’re going to the ball tonight, of course he’ll find you! If he doesn’t then I will speak to him. I will tell him his angel is looking for him. Come on, my dear, let’s get you looking perfect!”
~!~!~!~!~!~
YOU WERE CERTAIN that you were going to pass out at any moment. The corset was bound too tightly and it was as if you were walking through hell’s inferno. In reality you were only walking down a long corridor warmed with fireplaces, but it may as well have been the same thing.
A finely dressed butler escorted you and Joy through the palace to the ballroom. Joy held your hand as you walked, her grip like an iron vice. She looked beautiful. Once it was your turn to make her up, her hair was worthy of the princess’s tiara. Her forest green ballgown was made of the finest silk that rippled like water when she walked. She held her head high and turned to look at you with a bright smile.
“You would fit right in here.” Joy whispered lowly so the butler couldn’t hear your conversation.
“Maybe in the kitchens.” You sighed. “You look more like a princess than I do.”
“Nonsense. I wasn’t born to be a princess, unlike you.”
“Lady Joy, I definitely was not born to be a princess. Maybe the gods made a mistake. They’ve been known to do that, right?”
“There is no way this is a mistake. It’s clear that you belong here! You’re the most beautiful noblewoman I’ve ever seen, cousin!” Joy squeezed your hand pointedly.
Muffled music played through the doors and you suddenly felt sick. You pressed a hand to your stomach and stopped walking. Joy stopped as well. The butler continued on for a few steps before realizing that you weren’t following.
“I can’t do this.”
“Y/N! Are you with child?” Joy whispered and nodded to the hand on your stomach.
“What? No! It only happened this afternoon. It takes longer to develop a child. I’m just sick to my stomach.”
“It’s only nerves. Once we get into the ballroom, everything will be okay. We’ll dance a little bit and then we’ll enact the plan, alright?”
“I can’t. This was a terrible idea, let me go back to the room and-”
“No! Y/N, no! Just take a deep breath. I’ll be right there by your side the entire time.” Joy promised, “Let’s go.”
She pulled you along and the butler continued leading you through the palace. The music got louder and louder until the butler paused at a large set of double doors. Joy turned to smile at you one last time before looking forward.
A pair of butlers opened the doors, revealing a lavish, golden ballroom. Several crystal chandeliers hung from the ceiling with candles casting flickering rainbows on the walls. The dance floor was packed with ladies and gentlemen alike, dancing away in celebration. A handful of musicians played a waltz.
Your eyes were immediately drawn to a raised platform at the back of the room. A triad of ornate golden thrones with purple velvet and diamonds were perched atop. In the center throne, a woman in an enormous embroidered gown with a huge crown atop her head tapped her fingers to the time of the music; the Queen. To her left sat the young princess, no older than fifteen but old enough to be at her brother’s party. She stared out into the crowd with a polite smile. Then, your gaze landed on the man you wanted to see.
Prince Minho sat to his mother’s right. He wore the same outfit as before, except he’d taken his crown off and hung it off one of the posters of his throne. He lounged a bit in his chair, not really paying attention to anyone around him. He sipped on a goblet of wine. The prince, instead, stared at the ceiling.
He looked just as beautiful as the moment you first saw him. Something about the candlelight made his skin glow.
You sucked in a breath when you laid eyes on him. It took every ounce of self control in your body and Joy’s hand to keep you from running through the ballroom to be with him. Something tugged on your heart like an invisible string, urging you forward.
When you stepped through the door into the ballroom, Prince Minho cocked his head suddenly. He turned his gaze away from the ceiling and scanned the throngs of dancing people. He scoured the dancers before turning his attention to the walls. Servants were stationed by the wall or in the corners where they couldn’t be easily seen unless you were looking for them. Just out of sight, but there in case they were needed. Prince Minho searched the face of each one until his gaze passed over the doors you’d just walked through.
Then came the double take. He looked on the other side of the room for a moment before turning his head back in your direction.
When you made eye contact, you gasped and gripped Joy’s hand a little tighter. Joy immediately snapped her head to look at the prince. She followed his gaze and found you as the person in question. He raised an eyebrow in question but said nothing. He knew your true stature but he was in no position to tell anyone anyway.
“Come, let’s find something to eat. You need your energy.” Joy whispered, pulling your attention away from the Prince.
“But… Prince Minho…”
“There will be time for that. We have hours before the Prince will retire. He’s seen you, so there is no doubt in my mind that he will seek you out.” Joy assured you.
She pulled you through the ballroom to a dining room. There were several tables lined with food piled high on silver platters. Dishes like pork, chicken, rolls, roasted vegetables, you name it. Instantly, your mouth watered. You could not remember the last time you broke fast and your dehydration this morning left you with a pounding headache.
“I am pretty hungry…” You mused.
“Let’s get you something to eat and then I’ll tell you everything about my plan.”
~!~!~!~!~!~
JOY’S SUGGESTION DIDN’T sit right with you at first, but she eventually convinced you to dance with the very first man who asked. You’d barely caught the man’s name, Christopher something-or-other. He was staggeringly handsome, though he could hold no candle to your Destined.
Christopher spun you around the dancefloor for two whole dances. He was careful to keep his touches over your clothes but you noticed that his eyes kept dipping down to your mouth and to the swell of your breasts out of the dress. You wore long silver satin gloves up to your forearms, as was the fashion and the social assurance that no one could find their soulmate at these social events unless you tried really hard.
At the end of the second dance, a whirlwind of a waltz (where you definitely stepped on his foot more than once), you were beginning to feel a little out of breath. Joy was off dancing with another man, a complete heartthrob who had introduced himself as Peter. Joy had promised that she would watch you all evening, but Peter had her absolutely captivated.
Christopher gazed down at you with big, brown puppy dog eyes. He pursed his lips before opening his mouth to ask you to dance a third time. However, a terse voice cut through the atmosphere.
“Sir Christopher, do you mind if I cut in?” The voice sent a shiver down your spine. You would recognize it, recognize him, anywhere.
“Oh. Um, of course, Sire.” Christopher bowed before disappearing into the crowd.
Prince Minho took his place in front of you. You looked at him for a moment before dropping into a deep curtsy. Your eyes turned to the floor. Your heart pounded so loudly in your chest that you thought you might faint.
In an instant, Prince Minho was touching you. He put his hands on your shoulders to pull you out of the curtsy and one of his hands moved to your chin. With his soft fingers, he guided your face until you were looking directly into his eyes. The same grief from this afternoon clouded them and his eyebrows were pulled together.
The music started and other couples around you began to dance. Skirts swirled, girls giggled, shoes tapped on the wooden dance floor. However, none of that mattered. The outside world became a blur until the only thing you could see was the man in front of you.
He called you an angel before, but you were certain that the angel was actually Prince Minho. He glowed under the candlelight and his crown looked like a halo. Prince Minho grasped your waist and took your hand. You gasped at the contact.
“Take my arm.” He commanded. You quickly set your hand on his shoulder.
Before you knew it, Prince Minho spun you into the crowd of dancers. How he managed to lead without taking his eyes off yours, you may never know. You had so many questions but you had absolutely no idea where to even begin. All you knew for sure is that this would most likely be the last time you ever saw him.
“What’s your name?” Prince Minho asked.
“Y/N.”
“Beautiful. I knew your name would be beautiful.” A smile played on his lips, “How did you manage to come tonight? I thought you were a ladies maid.”
“I am. Lady Joy is more a friend than a lady. We grew up together. She asked me to come with her tonight.” You explained, your voice weak.
“Damn. I’d hoped that perhaps you’d fooled me in the garden. If you were a lady then my mother might have allowed us to marry.”
“Couldn’t we still pretend?”
“My mother, the Queen, is very resourceful. She would look into your family and find that you’re of common birth. Unless, of course, you can provide undeniable proof of noble birth.”
“I’m afraid I don’t think that will be possible.” Tears brimmed in your eyes at the thought.
You couldn’t explain it but your heart swelled with affection for him. You barely even know the man. However, you could practically feel every cell in your body aching for him and needing to be with him. His touch sent bolts of lighting through your veins. His lips were eye level with you and all you wanted to do was claim them as yours. Party-goers and the Queen be damned. This man was your soulmate and you wanted everyone to know.
“My love,” Prince Minho smiled sadly and moved his hand from your waist in order to brush away a tear that had fallen. He replaced his hand before you could fall out of step with the dance. “We will find a way. Maybe it won’t be today but I must have you by my side. I want to know everything about you. Please, my angel, don’t think of this as an ending. Merely a rocky and uncertain beginning.”
“How can you be optimistic about this?”
“I am a prince. We have a way of getting things done.” Prince Minho smiled warmly. The assurance that he was feeling the same way as you in this absurd situation made your heart ache a little less. “Dance the night away with me, my love.”
How could you possibly refuse him?
You spent the next three dances in the circle of your prince’s arms. Sir Christopher asked for your hand for one dance but Prince Minho stole you away the moment it was over. You twirled around the ballroom, talking and laughing with one another. He searched your mind, asking about your past, your family, your life. He wanted to know your favorite meals, your favorite colors, artists, and flowers. He, in turn, told you all about his favorites.
More and more things began to line up between the two of you. With every new thing in common, it became extremely apparent why he was your soulmate. He was your perfect match in every way. He was everything you ever could have wanted in a life partner. He was charming, witty, a fantastic dancer, and he cared deeply about his country and his duties.
Eventually, Prince Minho led you from the dance floor and onto the terrace outside. The air was cool against your skin and you hadn’t realized you’d been sweating. The party continued behind you, grand and gold. There were three sets of tall glass doors that were propped open between the terrace and the ballroom. There were fewer people outside, so it gave you and your Prince a quieter place to talk.
And talk you did. For hours it seemed, you spoke and shared things about your life. There wasn’t much for you to share but you wanted to know every detail about him.
“You must be dreading your marriage.” You sighed.
“I am… but I know it must be done. The last thing I want is to be with someone who isn’t my soulmate. However, I understand that it is what I must do. My father would have wanted me to do the same as him.” Prince Minho explained. “In the garden earlier, I was prepared to run away from it all. I still wish I could escape. However, now I know that I cannot escape my duty.”
“The same as your father? What do you mean by that?” You asked. You bit down the stinging pain in your chest from all the talk of him marrying another. Though, you had to admit that it made sense.
“My mother was not his soulmate, you see. He never told me who it was but I’m not sure that they ever got to be together before he died.”
“Your parents managed to have children, though! That is an accomplishment! I heard that fertility rates between non-soulmates is very low.”
“I think it worked because my mother has never met her soulmate. She truly loved my father and I believe that it was her love that made my sister and I come into existence. Or maybe it was pure luck.”
“Do you believe in true love? Love that isn’t born of soulmates?”
“Well, I suppose I’ve never thought about it. I don’t think that I have ever loved anyone before. I fancied a few of the ladies when I was younger, but I always knew that I would either find my soulmate one day or I would have to live without them.” Prince Minho gazed out into the garden. The paths were lined with torches that cast a golden glow on the ground. Two or three lone couples strolled through the garden.
“I apologize, My Prince. We can discuss something else.”
“Angel, it is alright. There is no way you could upset me.” Prince Minho assured you.
He reached out and cupped your cheek with his hand. He guided your head to make sure you were looking directly into his eyes. “This situation is less than ideal but it is in no way your fault. It’s crazy. It feels as if I’ve known you all my life.”
“I know… I wish I didn’t have to leave.”
“I wish you didn’t have to go.”
Minho guided your face a little closer to his and pressed a fleeting kiss onto your cheek. His soft lips lingered on your skin for a few long seconds. His musky scent filled your nose and overwhelmed your senses. You closed your eyes and breathed him in. Something deep in your core wished that he would have kissed your lips instead.
However, all good things come to an end.
“HEAR YE, HEAR YE.” A voice boomed from inside the ballroom, “ALL SUBJECTS APPEAR BEFORE THE QUEEN FOR AN IMPORTANT ANNOUNCEMENT.”
Prince Minho pulled away from you and looked towards the ballroom. The music had stopped and all of the guests were venturing towards the center of the room to listen to the announcement. He turned to look back at you.
“It’s time, my love.” Prince Minho offered you his hand.
Your lower lip quivered and you blinked back the tears brimming in your eyes. You stared at his hand. You forced yourself to swallow a sob. Gently, you took his hand. He led you back into the ballroom. The stifling heat made it nearly impossible to breathe. Your chest ached. Your heart pounded in your ears.
Once you got deep enough into the room, Prince Minho pulled you to a careful stop. He looked deeply into your eyes for a few long seconds. You stared back, desperately trying to memorize the way his eyes glowed like honey in the candle light. They sparkled a little and with a start you wondered if he was about to cry.
“I’m going to miss you.” He whispered.
“And I you.”
He gently pulled you closer. You thought for a moment that he was going to kiss you. The air between you thinned as his face inched closer. He cupped your cheek in his hand and pressed your foreheads together.
“Your lady is Lady Joy, correct?”
“Lady Joy Park.” You affirmed.
“I will send for you this evening, my love. Fear not, this will not be the last time we see each other.”
With that, he vanished into the crowd. His hand dropped from your face and he let go of your hand. The other guests of the party bustled around you. The air in the ballroom ran hot, but you shivered. You searched the faces around you desperately, hoping that perhaps he would emerge from the crowd and come back to you.
Prince Minho did emerge from the crowd, but only when he stepped back up onto the platform and reclaimed his throne. His stoic face was set and he stared blankly into the crowd. Your eyes welled up with tears and you blinked to try to keep them at bay.
How were you supposed to go on without your soulmate? All you wanted to do was run up to the throne and tell the entire room that he was yours and that no one else could have him.
Almost as if she read your thoughts, Lady Joy appeared at your side. She took your hand and gave you a reassuring squeeze.
“How did it go?”
“I’ll tell you later.”
The Queen cleared her throat so loudly the chandeliers quivered. She rose to her feet and instantly all chatter in the room ceased. Someone coughed.
“It is with regret that I inform you that our dear prince has not found his soulmate.” The Queen began, “Despite all of our efforts to find his destined partner we were unsuccessful. However, we still have call for celebration this evening. I am happy to announce Prince Minho’s betrothal to Princess Anna from the Roman Kingdom! The nuptials will be held next week and invitations to the event and the following balls will be sent henceforth! They will honeymoon on the island Sicily, where our dear princess was born before they return home to us. Please, let us congratulate the lucky couple!”
Everyone in the room applauded politely. Prince Minho rose to his feet and bowed before sitting back down.
You were absolutely positive that you were going to be sick.
“Lady Joy?”
“Yes, Y/N?”
“Get me out of here.”
Joy wasted no time.
She tugged on your hand, urging you to follow her. She weaved through the crowd of people. On your way, the man you remembered as Lord Peter stopped Lady Joy. They whispered to each other for a few seconds, including something about a promise to see each other again soon. With that, Joy set off again. Lady Joy beelined towards the doors and urged the guards to open them. They gave her a puzzled look, but followed her silent command.
Your lady pulled you into the hallway and you couldn’t help but glance back one more time. To your relief, or perhaps horror, Prince Minho noticed the opening of the door and his gaze found you immediately. You locked eyes one last time before Lady Joy led you down the hall, out of sight.
The heavy doors slid shut behind you, the heavy thud making you wince.
How were you supposed to leave Prince Minho behind you?
~!~!~!~!~!~
“IS SHE QUITE well?” The butler’s concerned voice carried through the large bedroom. You heard him even over your crying. You sobbed into the pillow that was damp with your tears and yet you couldn’t stop. Your body shook with crying and you could not seem to stop it. Lady Joy stood at the door, accepting a pile of dry pillows that she’d requested after you’d dampened all of the others with your tears.
“She is well, do not worry.” Lay Joy assured him.
“Should I send for a doctor?”
“Heartbreak is something a doctor cannot fix, I’m afraid. I will call for you if we require anything else.”
With that, Lady Joy shut the door and made her way back to the bed. She tossed the pillows at the foot of the bed before climbing under the luxurious duvet with you. She wrestled with the neverending fabric of the blankets and her nightgown before she settled in and returned her attention to you.
Both of you had changed out of your ballgowns as soon as you’d returned to your quarters. You managed to hold back your tears just long enough to get out of your corset. Then the waterfall began and hadn’t stopped. Joy did her best. Supplying you with things to dry your eyes and drink to keep your body from drying up but there was only so much she could do.
You told her everything. You told her about the dancing, about your conversations, and about how Prince Minho promised that he would call for you. What made it worse is that it was hours ago. You’d already gone through at least half a candle, if not more. The music from the ball could be heard faintly through the window.
“Perhaps he’s still there. It would be rude of the host to leave prematurely.” Joy reminded you.
“I can’t help it! I don’t know what to do!”
“Oh, my dear Y/N, I wish I could help you.” Joy gently stroked your hair.
“Will the pain fade?”
“Perhaps with time. It’s getting late, Y/N… you look exhausted. Let’s try to sleep okay? In the morning we can escape from this wretched place.”
Your eyes ached from crying. Your cheeks were sticky with tears. Joy grabbed one of the dry pillows from the end of the bed and replaced the one you were using. She slipped out of bed once more to blow out all of the candles in the room.
Once the room was dark, Joy slipped back into bed with you. You buried your face into the pillow and sniffled. Your eyelids grew heavy and you begged sleep, or perhaps death, to overtake you. You squeezed your eyes shut and forced yourself to think of other things.
Tomorrow you would have to spend hours doing laundry. You would be washing all of the undergarments and skirts, ironing dresses, polishing jewels. The task would probably take the entire day. The banality of your day to day work would be sure to wipe away your feelings of dread.
It must have only been moments after you drifted into a restless sleep when someone pounded on the door. Your eyes shot open and you found Joy had also been startled awake. You stared at each other for a few seconds before the pounding on the door came again. Joy abruptly sat up. She wrestled with the blankets for a few long seconds before she successfully freed herself and hurried to the door.
You sat up when the door creaked open.
“Is there a young lady here by the name of Y/N?” A male voice spoke from beyond the door.
“Y/N… is there another name?” Joy asked.
“Angel. Prince Minho sends for her.”
You perked up immediately. You threw the blankets off and clamored out of bed. Joy put a hand up and you froze in place.
“Yes, sir, she is here. Please allow me a moment and I will fetch her.” Joy spoke calmly. You bounced on the balls of your feet.
“Yes, my Lady.”
Joy shut the door and turned to you, eyes sparkling with excitement.
“Y/N, take off your nightgown.” Joy stared at you expectantly for a few seconds. “Make haste!”
~!~!~!~!~!~
YOU CHEWED ON your lower lip as you stared at the large pair of ornate double doors. The butler who had been sent to get you waited patiently nearby, waiting for your command to open them. You couldn’t explain why the nerves and fear that overwhelmed your heart as the butler led you through the dark hallways of the palace.
Perhaps it was the silence. The butler didn’t say a word to you unless to remind you to follow him. Or it was the dark hallways, lit only with a few lone candles.
Or perhaps it was the nightgown that swirled about your ankles. Joy insisted on giving you hers. Your nightgown was a plain white smock but Joy’s was made of the finest pink satin and was decorated with lace and satin flowers. It came paired with a matching silk robe that tied around your waist. The sleeves and the skirt billowed as you walked. It didn’t feel right to you to be wearing such a garment but Joy insisted. If you were meeting the prince, you had to be dressed accordingly.
You couldn’t argue with your lady so you agreed to switch nightgowns with her. Once she had yours on, she promised to get you a nicer nightdress for your birthday.
“Anytime, Miss.” The butler pursed his lips. “The prince does not like to be kept waiting.”
“Open the door, please.” You barely recognized your own voice.
The butler pulled the door open and gestured for you to enter first. You took a deep breath before striding through and into a bedroom about twenty times as ornate as the quarters provided to Lady Joy. The lofted ceiling should have made the room cold, but a large fireplace was lit ablaze and crackled away.
The door slid shut behind you. When you glanced back, the butler hadn’t followed you.
You slowly walked deeper into the room. You passed through a lush drawing room, surely meant for entertaining. A study where a large oak desk dominated the space. A door was cracked leading into a bathroom where the bathtub alone was the same size as your room back home. Until finally you reached the bedroom. A large four poster bed stood tall against one wall and a chaise and a few plush couches surrounded another active fireplace. Against the wall opposite from you stood a pair of floor to ceiling glass doors that were open and led out onto a balcony.
And there he stood. Prince Minho had his back to you and he leaned against the balcony railing. He stared off into the night. If he heard you enter, he did not say. For a few moments, you stood in the middle of his bedroom and waited. You weren’t sure if you should say something or not. Besides, it was not in your nature to speak before spoken to. You wondered what he was thinking about.
“Come, my love.” Prince Minho glanced over his shoulder and gestured for you to join him. Your feet carried you past the threshold and onto the balcony. You didn’t have a chance to see the view before you were crushed in the warmest hug you’d ever received.
Once you were close enough, Prince Minho pulled you into a tight embrace. He buried his face in your neck and breathed in deeply. His warmth enveloped you and his body hid you from the cool night air. You didn’t hesitate long before your arms wrapped around his waist and pulled him into you. The soft breeze around you ensured that his rich scent invaded your nostrils and you ached to have the smell imprinted on your very soul. You wanted to remember how he held you. He held you as if it was truly the last time.
“We will find a solution, I promise.” Prince Minho murmured into your neck.
“I wish I could stay.”
“I could command it.”
“I can’t leave my lady.”
“I can’t bear to be wed to another.” Prince Minho pulled away just enough to look at your face. “This entire kingdom should be yours.”
“As long as you are my soulmate, the entire kingdom is mine.” You assured him with a small smile. Even though your entire body ached with sadness and you wanted to cry, you couldn’t. You didn’t want to cry in his presence.
“Look at it.” Prince Minho moved behind you and wrapped his arms around your middle. He moved until you stood at the railing. “No matter the circumstance, as a prince you are my princess. When I am king you will be my only queen.”
Your breath caught in your throat at the sight and his words. From here, you could see the entire gardens as well as the golden glow coming from the ballroom. The city sprawled out around the palace, warm and alive. The lights below glittered and you could almost make out the subjects walking the streets. For them, their days were just beginning. The city extended as far as the eye could see until it met the black ocean. From there, only inky blackness.
“Look.” You pointed towards the city, “You see the clocktower?”
“I do.”
“When I have time to myself I like to go to a park nearby for a walk. I get a day off a month and I usually spend it there.” You explained, then pointed somewhere else. “I take my lady to a seamstress near the tavern over there.”
“Where do you live?” Prince Minho’s breath fanned against your ear.
“Over there.” You pointed off to the side, “Just out of sight. Beyond that spire.”
“My angel… tell me something lovely.”
“Like what?”
“It matters not. Tell me something lovely that makes you feel happy.”
“Hmm…” You mused for a few seconds, “The feeling of grass under my feet on a warm summer day. The ocean breeze through my hair. The tiny noises of a puppy. Crawling into bed after a long day. The smell of freshly baked bread. The rich scent of roses.”
“Roses… I may never look at them the same way again.” Prince Minho chuckled.
“I don’t think I will, either.” You giggled. “What about you? What are some lovely things?”
“Well…” Prince Minho’s lips pressed onto your neck and he hummed. His hair tickled your skin and you couldn’t help the giggle that came from your throat. “Your laugh is the most beautiful music I’ve ever heard. The smell of old parchment. Having a warm bath after a hunt. Biting into a perfectly crisp apple. Kissing the skin of your beloved. Pink silk nightgowns.”
Between each offering, your prince pressed a warm kiss on your skin, trailing from your neck to your shoulder. His fingers gently moved the fabric of your nightgown aside so he could press kisses on all of the skin he could. You sighed and tilted your head to the side to give him more access. Your eyes slid shut.
“Prince Minho,” you sighed when his fingertips traced your collarbones.
“To you, I am no prince. I am merely Minho.” he whispered. His fingers trailed down your chest to the silk ribbon holding your robe shut, playing with the fabric and running it through the pads of his fingers. “Will you let me love you? Let me shower you with my love and bring your body so much pleasure.”
“Pleasure like in the garden?”
“Just like that, but tenfold.”
Your body trembled with nerves, but you nodded all the same. Minho pressed soft kisses on your skin and you sighed at the feeling. He slowly pulled the ribbon free and your robe fell open for him. He smoothed his hands over your stomach and hips and you sighed at the contact. You leaned your head back to rest on his shoulder and he accepted your weight willingly. He wrapped his arms around you and held you tightly.
“You can say no,” Prince Minho whispered, “It’s okay. I can love you in more ways.”
“I want to but… I’m nervous.” You admitted. You ached to have him again, if the aching between your legs was anything to go by, but now that the soulmate urge had passed the thought of having something so… big inside of you again made your heart flutter.
“My love, I would never hurt you. We can take this as slow as you wish.”
You stayed in that position for a few minutes. Your head on his shoulder, his arms wrapped around you and holding you as close to his body as possible, both of you staring out at the kingdom below. Your mind wandered, giving you visions of royal life. Perhaps working in the palace so you could at least be closer to him. Getting to sleep in his room each night, slipping out in the morning. You could never be queen. Joy taught you to read but you never quite understood the classic literature that everyone of noble birth had to read to be educated.
You imagined attending parties, dressing up, and dancing the night away in beautiful golden ballrooms. You imagined eating food prepared by the palace cooks each and every morning. If what the cooks prepared tasted as good as what you had for dinner, you thought you could get used to this life. Honestly, you didn’t even want to be queen. Or even a princess. You just wanted to love him. Freely. Openly.
“All I want is to know you.” You whispered and Minho hummed to encourage you to keep speaking, “I want to know you inside and out. I want to grow a partnership, I want to know what you hate and I want to know what you love. I want to know how you take your breakfast, how you take your tea, your favorite walking paths, where do you hide when you need to get away from it all? I don’t want to leave in the morning.”
“Then don’t,” Prince Minho tried again but he knew your answer, “Stay with me in the palace. We could figure something out and I will make sure that you stay by my side.”
For a few long seconds, you stayed silent as you contemplated his words. As the seconds ticked on, Prince Minho heard his answer.
“I’m sorry, my lord.”
“Then let us focus on this night. Let us spend our time focusing on each other.” Prince Minho turned you around in the circle of his arms so he could gaze upon your face. His eyes glistened with tears and you wished you could take his pain away. “Please… call me Minho.”
“Prince-”
“No,” he cut you off, pressing his lips to your forehead for a few seconds, “Just… Minho.”
“Minho…” You breathed, “Bring me pleasure. I will bring you pleasure tenfold. Please.”
“Angel, you never have to ask.”
His lips crashed onto yours with no more ceremony. Your heart swelled at the contact and you kissed him back eagerly. His lips tasted so sweet. Your favorite sweet could never compare to his taste. Your arms wrapped around his neck and he pressed you into the balcony railing. He twisted his head a little and kissed you deeper. You accepted everything he had to give you.
Minho put his hands on your shoulders and pushed the robe off. The fabric pooled around your waist and he started on working the robe off your arms but you pulled away a little.
“Wait. Not here.” You whispered. Minho pulled away from you.
“No one can see us up here, Angel.”
“Still… I… I don’t want to lose the robe. It belongs to my lady.” You admitted.
“When you are mine, I will give you hundreds of nightgowns made of the finest silk in all the land.” Minho pressed warm kisses on your jawbone and neck as he spoke, trailing his lips along your skin and leaving trails of fire in his wake.
“I’m already yours.”
“Don’t you forget it.”
With that, Minho swept you up into his arms and carried you bridal style back into his room. You yelped when you initially lost your footing but giggled as he carried you. You held onto him and nuzzled your nose into his neck. Minho paused in the middle of his room and looked towards the fireplace then towards his bed on the other end of the room. After a few moments of deliberation, he made his way over to the bed and gently laid you down on the plush mattress. He was over you in an instant, pressing his knees on either side of your hips.
“Angel, I want to see you this time. I want to see all of you.”
Minho’s hands ran over the fabric of your nightgown. His eyes trailed over your curves. His hands moved to gently cup your breasts. He squeezed them and pushed them together to watch them swell under the fabric. His thumbs ran over your pebbled nipples and you gasped at the surprisingly pleasant feeling that came from it. Minho smiled softly and repeated the action again and again, rubbing his thumbs in circles around your nipples. Your back arched into him and your eyes slid shut so you could enjoy the stimulation.
He moved one of his knees to press at the seam between yours. Your legs easily fell open to accommodate him. Minho leaned down to capture your lips in a searing kiss. He resumed his task of helping the robe off your body. You assisted him by pulling your arms out of the sleeves and tugging the offending fabric away so it could pool on the ground. Minho gripped your thighs and worked on pushing the silky fabric up your legs so he could touch your bare skin.
Your hands busied themselves with pulling his blouse up and over his head. He broke the kiss briefly to rip his shirt off and toss it on the floor before kissing you again. He didn’t give you the chance to admire his figure, but your hands traced his strong shoulders and strong chest and abdominal muscles.
That telltale arousal began to pool between your legs. The same heat you felt in the garden licked up your spine and made the junction between your legs ache. Your hips unconsciously rolled upwards, only to catch on Minho’s pants. The sudden friction made a moan slip from your lips. Minho pulled away with a gasp.
“Please make that sound again. I will worship the ground you walk on.” Minho moaned out. He pressed his thigh closer to the apex between your legs until it pressed firmly against your heat. You gasped at the contact but winced when you remembered that Joy’s silk gown still covered you. You grasped the skirt and pulled it up over your hips and Minho moaned again. “Nothing underneath, angel? Were you hoping I would fuck you?”
Mindlessly, you nodded, choosing not to remind him that it was, in fact, him who ripped your undergarments to the point where they could not be used. Instead, you pressed your core against his thigh and moaned at the pleasure that sparked through you. Minho flexed his thigh and urged you to grind against him. Your hips moved slowly as you got used to the rhythm and the new pleasure. You whimpered as the pleasure grew but you weren’t sure if you would be able to climax like you did in the garden.
“More,” you whimpered thoughtlessly.
“My angel wants more?” Minho cooed. He stared down at you with such awe, as if perhaps there was an actual angel below him. “What do you want? I shall give it to you.”
“I…” you trailed off, your mind going blank, “I don’t know. I want you to touch me.”
With that, Minho pulled his knee away and pushed your nightgown up to expose your core to him. Instinctively, you parted your legs a little more. Minho’s gaze flickered down to your center and pulled his lower lip between his teeth. Your folds glistened in the low glow from the fireplace across the room. Minho moved a hand and gently swiped one of his fingers through your folds and brought it to his mouth. His eyes rolled back in his head at the taste of you.
“Angel, can I taste you properly?” Minho’s gravely voice sent a wave of arousal through you.
“You just did…”
“I want to put my tongue on you.” Minho slowly lowered down the bed until his face hovered just above your core, “If it’s too much tell me to stop.”
With that, Minho flattened his tongue against you and your back instantly arched off the bed. You let out a choked gasp as the dizzying sensation swept through you. His warm, wet tongue licked through your folds, mapping every ridge and dip and curve. He swirled his tongue around your opening to gather your wetness in his mouth before he moved up to suck on your clit. A keening moan left your throat as he sucked and nipped at the little bud. You couldn’t stop the small moans and gasps you let out as Minho’s tongue played with you.
“You taste so good, angel.” Minho moaned.
He licked down to your entrance and slowly wiggled his tongue past the barrier. He moaned against your core and pushed his tongue deeper into you. You moaned at the feeling and tilted your hips up to chase his face, as if he had any intention to move. He lapped at your walls greedily, like a man who’s never tasted water before. Minho’s eyes slid shut as he savored your warmth in his mouth. His nose nudged your clit with every few pushes of his tongue and it was enough to build the most amazing feeling in your stomach.
You recognized that feeling now, it was the same one from the garden. As if on instinct, you reached for his head to keep him against you before you paused, realizing that this was the prince you were about to touch without permission. He’d told you a hundred times that you could, but the doubt still hovered.
As if reading your thoughts, Minho reached up and grabbed your wrist. He led your hand to the back of his head before hooking his arm under your leg to hold you against him. Your fingers slid through his silky locks easily. You gasped out at a particularly harsh suck and you gripped his hair tightly. Minho let out a moan into your pussy and the vibrations, in turn, made you moan.
Minho refocused his efforts, moving up to wrap his lips and tongue around your little clit. His other hand slid between you until his fingertips prodded at your swollen hole. You gasped at the contact, but tilted your hips up to chase the feeling. You could feel him smile against you. The coil within you tightened and you gasped.
“Aw, sweet girl, are you going to cum?” Minho cooed.
“Yes! Yes, please, I need more.” you moaned out.
“You want my fingers?” Minho drew a small circle around your hole with a fingertip.
“Fuc- yes!” You choked out a moan when he pushed one finger into the knuckle.
“Mm, you’re so tight.” Minho murmured those last words right against your clit before sucking it into his mouth.
You were certain you had died and gone to heaven. The added stimulation of his finger and the incessant swirls of his tongue sent you hurtling towards a release in record time. Like the wave inside of you, your moans also rose like a crescendo. Growing in pitch and frequency, you couldn’t hold them back. You gripped onto Minho’s hair like a lifeline as the pleasure peaked.
“Cumming- sir! Sir, I’m cumming, please!” You all but shrieked as you came into his mouth.
Your legs shook, even as Minho slowed his ministrations to ride you through it. Even though he’d just given it to you, he pulled his finger out and moved his face a little lower so he could lap gently at your pulsing hole. You quivered and moaned as wave after wave of pleasure washed over you until it slowly turned to pain. After one soft lap, you winced and let go of Minho’s hair.
He took this as a sign and pulled away from you. He sat back on his knees and tilted his head back. He closed his eyes and rested his hands on your legs, just to keep some form of physical contact with you. You watched as he ran his tongue along his lips as if to gather every single drop of your sweet essence.
“You’re so beautiful when you cum.” Minho commented, opening his eyes once more to look into yours.
“I want to make you cum, too,” you declared, sitting up and placing your hands on his hips.
His noticeable and very neglected erection strained in his pants. You kept your eyes on his as you moved your palm to gently cup him. Minho’s eyes fluttered shut at the contact for a moment before he opened them once more to look at you. He cupped your cheeks in his hands as you palmed him through his pants.
“And you will do so once I am inside of you.” Minho’s low voice slid easily down your spine and you shivered.
“But Minho… Can I taste you, too?”
“How can I say no to that when you’re looking at me so sweetly?”
Minho’s nimble fingers immediately got to work on the laces on his pants. He flopped down on the bed next to you and worked his pants off his hips until they were a forgotten pile on the floor. His shirt was thrown on the floor next, leaving him completely bare. His fingers played with the hem of your nightdress and his eyes twinkled.
Slowly, you lowered yourself to get a closer look at his cock. Long, thick, and heavy. The dark pink head oozed precum and you licked your lips in anticipation. You could hardly believe that this is the thing that had just been inside of you this morning. Only a few hours ago, this thing had made you cum so hard and it was about to do it again.
Unable to wait any longer, you leaned forward to press a wet kiss to the leaking head. Minho moaned on contact, throwing his head back into the plush pillows as you suckled it into your mouth. You ran your tongue over the velvety skin, sighing as he leaked more precum. Salty and musky but overall not unpleasant. Minho’s deft fingers swept through your hair and pulled it back so it wouldn’t get in the way. You lifted your gaze to meet his and he just about blew his load right there.
You looked so sweet, gently sucking on the head of his cock while looking at him innocently through your eyelashes. Your petal pink nightgown hung down just enough for him to get a clear look at your tits that swelled with each breath. The sight alone made him moan louder.
“Am I doing it right?” You pulled away slightly to blink at him.
“Fuck, yes.” He responded, laughing softly, “Keep going.”
Not one to refuse an order from your future king, you lowered your head and put him back in your mouth. Minho moaned softly, the sweet noise encouraging you to take a little more of him. Minho panted as he watched you take more and more of him until your nose lightly grazed his stomach. His tip prodded the back of your throat and you choked a little. Minho rolled his hips up into your mouth and you let out a little gasp.
“Run your tongue along it.” Minho guided you.
You wasted no time and swirled your tongue along the underside of his cock. You bobbed your head up and down his length, swirling your tongue as you went. Occasionally you rose all the way up and sucked on the head like you would a cube of ice on a hot day. This action would make him whimper and writhe under you. Every time he made a noise of pleasure, your core clenched and dripped even more for him. You couldn’t wait to take him again.
Minho used the grip he had on your hair to guide you up and down his length. He kept his eyes on your lips as you accepted him into your warm, wet mouth time and time again. The knot in his stomach kept tensing, threatening to spill his release down your throat but he wasn’t done receiving all the the pleasure your body could give him. Maybe one day he would paint your face and lips in his cum, but today was not that day,
All too soon, he pulled you off of him roughly. He tugged you up to be face to face so that he could kiss you. His plush lips caressed yours hungrily, coaxing your tongue into his mouth to suck on. If he minded the salty taste of his precum on your lips, he didn’t say anything. Just like you didn’t say anything about the taste of yourself on his tongue.
“If I don’t fuck you right this instant, I may die.” Minho murmured against your lips.
“How do you want me, my love?”
“Naked.”
Minho clawed at your nightdress and pulled it over your head. The flimsy fabric joined the pile on the floor. The air hit your exposed chest and your nipples perked immediately. His hands came to gently cup your breasts and he kneaded them slowly. His thumbs gently traced matching circles around your nipples and pleasure sparked through you with every touch. You arched your back, pushing your chest into his hands more. Minho grinned mischievously before he leaned up and closed his lips around one of your hardened buds.
“Oh!” You gasped as his tongue circled your nipple. His teeth caught on the sensitive peak and you moaned and threw your head back. “Minho!”
“Yes, angel, tell me who’s making you feel good.” Minho whispered as he moved his mouth to your other breast and latched on. He sucked and swirled his tongue on your nipple like he would die tomorrow and the only thing that could save him was you and the essence you could promise him. “Just imagine these beautiful works of art filled with milk for our baby, hm?”
“Yes,” The thought of bearing his child sent another wave of arousal through you. Though you knew it would never happen, you decided to let him play into the fantasy.
“My angel, you would look so beautiful. Giving our baby life, giving me life.” Minho sucked harshly on your nipple and switched one last time to the other side. “I wouldn’t be able to stop myself from tasting you every day.”
“Minho!” You moaned when he lightly bit down on your swollen nub.
“Good girl.” Minho pulled away with a quiet pop and blew onto your damp skin. The cold stream of air on your wet breast made you shiver. “Lay down. I want to see your face when I enter you.”
You scrambled onto your back, your hands hastily brushing your hair out of your face as Minho crawled over you. As natural as opening your eyes in the morning, you opened your legs for him. He smiled as he settled between your thighs. His cock brushed your inner thigh and you both shuddered at the contact. He buried his head into your neck and sighed. He breathed you in, kissing your skin deeply.
“Minho, please.” You urged, your hands finding purchase on his slim waist and pulling him closer to you. Your core ached, wet and empty.
“I’m going to make love to you now. If you need me to stop, tell me and I will.” Minho rolled his hips into yours. His cock slid through the wet lips of your pussy and caught on the hood of your clit.
“I never want you to stop.”
Minho moaned into your neck and kissed his way up to your lips. He kissed you deeply, dipping your tongue into your mouth to drink in your moans. One of his hands dipped between your bodies to grasp his cock. He ran the tip through your soaked pussy, pushing it against your clit to illicit moans and gasps from you. Each pass made your hole even more soaked and empty.
“Angel, you feel so good.”
“Put it in.” You whined.
Minho pulled back from you just enough so that he could watch your face when he pushed into you. The head breached your hole and you let out a keening moan. Your hooded eyes watched his face contort into pleasure as he slowly inched inside of you. His length caressed your walls as he sunk in, inch by glorious inch. His eyes never left yours, even when he hit a dead end.
He bottomed out, his thighs pressed firmly into yours. You could have sworn the tip of his cock was hitting the back of your throat.
“You look so beautiful when you’re full of my cock.” Minho moaned. His skin was tinted a rose color and the vein in his neck looked close to popping. “You’re so tight, Angel, I could cum right now.”
“So full,” you choked out, hardly able to form words around the stretch of him in your cunt.
“Wanna fill you up even more, Angel.” Minho buried his face in the crook of your neck again. He rocked into you slowly, hardly even moving at all. If he moved too much too fast he was worried that he would cum far too quickly. Your tight heat choked his cock and coated him in your sweet wetness. His slight movements in and out of you made your pussy squelch around him.
“Move,” You begged.
“I’m going to make you cum so hard.” Minho promised.
With that, he pulled his hips back until just his head remained sheathed by your walls. Then he pushed forwards with all the force he could muster and your combined moans were like music. Your cunt clamped onto his cock as he fucked you with earnest. He rolled his hips into yours slowly but with so much force behind them that you were sure you’d be sore tomorrow.
Tonight, you couldn’t care less.
You rolled your hips up to meet every thrust. Minho’s precise thrusts rubbed against all of the perfect spots inside of you. His girth stretched you wide and you wondered how it was possible that there would be enough room inside of you for his cum.
Minho wasn’t faring with that thought any better. Your tight cunt gripped him like a vice. Every time he entered you, you clenched so tightly that he was worried that every thrust might be his last. The last time he fucked you, things had gone by quickly and he hadn’t had the time to really feel you. This time, he was careful with his thrusts so he could feel every inch of your slick walls around his aching cock. Your walls clenched and clamped onto him.
“Angel, you feel so good,” Minho moaned, leaning down to suck a mark into your neck, “I don’t think I’ll last.”
“Me either.”
You were surprised with how quickly the pleasure mounted within you. Your core ached like before, but this wasn’t a quick fuck like in the rose garden. Minho was making sure that you could feel every single inch of him and that he could feel every ridge and bump of your walls.
When he fucked you behind the rose bushes it was quick and rushed. He’d pounded into you like he was going to die if he didn’t. The orgasm he’d coaxed you through was powerful and quick.
This, however, was the exact opposite of that. Each movement was slow and calculated. Each deliberate roll of his hips made you shudder with pleasure. It was like he was trying to get his entire cock into you with every thrust while also taking the time to feel every inch.
“Faster,” you choked out.
“Want to feel you, angel.” Minho grunted, “Want to feel you cum on my cock. Can you do that?”
“I-it’s too much-” you choked after a particularly brutal thrust.
“Come on, love, I know you can do it.”
Minho’s hands trailed down your body, to your legs, to hook under the back of your knees. He hiked your legs up until you had your ankles hooked behind his back. This gave him a new angle to thrust into you. His pubic bone grazed deliciously against your clit with every pass. You were certain that you would lose consciousness at any moment.
“I can’t.” You sighed out.
“It’s okay, angel. Just relax and let me take care of you.” Minho urged.
Only moments later, the string in your tummy pulled taut. You moaned softly into his neck as he delivered each of his perfect thrusts. Your back arched off the bed and you pushed your hips up to meet his. This created the most beautiful and intense pressure in your cunt.
“You’re squeezing me so tight! Are you about to come?” Minho moaned into your ear and you nodded. “Good girl, let me feel it.”
It was like your body waited for his command. Your orgasm crashed over you and you couldn’t stop yourself from throwing your head back and letting out the loudest moan of the night. Minho continued fucking you through it, chanting words of praise into your ear. Your cunt squeezed the dear life out of him and he wasn’t sure how much longer he’d last. You tightened your legs around him in order to keep him inside you.
“Don’t worry, I’m not going anywhere,” He promised, “I’m going to come inside of you, mark you as mine so you keep a piece of me with you wherever you go.”
“Yes,” You moaned out, still shaking through your powerful orgasm.
It was all the confirmation he needed to bury himself as deep inside you as he could to release. The warm sensation of cum filling you up spread through your belly. Your pussy spasmed around his length, milking him for every single drop. He thrusted into you shallowly a few times until he was completely empty.
Finally, your legs dropped from around his waist and he took that as a sign to carefully pull out of your spent hole. Minho sat up on his knees to watch as his softening cock left your tight hole. His cock was coated with your slick and shone in the low light from the fireplace.
He collapsed on the bed next to you and wasted no time in pulling you into him. Minho held you tightly, neither of you minding the tacky stick of your sweat-slicked skin. You clung to him as well, burying your face into his neck. Together, you came down from your highs, breathing hard and holding one another tight.
“Please stay.” Minho whispered into your hair, “I won’t command it, but will you please stay with me until dawn?”
“Yes, Minho. I promise, I’ll stay.”
~!~!~!~!~!~
THE CALL OF the rooster roused you from your sleep well before you were ready. Your eyes peeled open and the sun had barely even kissed the horizon. You sighed and pushed the blankets away and sat up. You glanced up at the pink silk nightgown that hung from your door. Lady Joy refused to let you give it back, but you couldn’t bear to wear it again.
Gone were the fine silks and wools of the Prince’s palace bedroom. Here to stay were your maids quarters with its scratchy sheets and windows that you could never quite get clean. You gently lifted your hand to touch your lips. Those very lips had touched the Prince’s months ago.
Slipping out of bed that morning had nearly gutted you, but you redressed in your lady’s silk gown and returned to her quarters. All before the prince even awoke.
Eons ago. The ball and the roses and the gowns were eons ago. So why did you still feel his touch on your skin? Why could you still hear the orchestra playing the waltz that your prince whisked you away to?
You were thankful that his wedding bells hadn’t rung on your day off for the month. Lady Joy attended the ceremony but left you at home with a long list of chores to complete. Most of them were mindless busywork but she knew to keep you distracted.
Since the ceremony, life simply returned to normal. Your daily tasks resumed and you cared for your lady to the best of your ability. Which, as of late, was not much. Lady Joy did her best to be accommodating, which you were more than thankful for. You just wanted to get back to work. You had a feeling that the grace she was giving you was beginning to frustrate her mother.
You forced yourself out of bed and you quickly dressed. You swallowed down the wave of nausea that climbed up your throat and made your way to Lady Joy’s chambers. The curtains were drawn and the embers of a fire crackled in the fireplace. Lady Joy was curled up in the center of the bed, fast asleep. Her light snores provided some white noise as you rekindled the fire and prepared her vanity for her morning routine.
Eventually, you flung open the curtains and the warm light from the sun streamed into the room. You sighed as it hit your skin, basking in the warmth for a few moments. Joy groaned behind you and shoved her head under her pillow.
“Rise and shine, my Lady. You have many duties to attend to today.” You chided her.
“Like what?” Joy groaned, muffled by the pillow.
“There is a tea party this afternoon. Duchess Loh is hosting and is expecting your attendance. Then Lady Mina is requesting your presence at dinner this evening.” You explained, moving from the drapes to the closet. You threw open the doors and perused the gowns available for the day. You were admittedly a little behind in your laundry.
“I think we should cancel.” Joy groaned, “I’m feeling quite ill today.”
“Ill? Are you alright?” You retreated from the closet to sit on the edge of her bed.
“My stomach is turning. I’ve been feeling ill for several days.” Joy gently rubbed her stomach. “It usually passes in the evening but perhaps dinner disagreed with me?”
“For the last several days? That sounds quite serious. Perhaps I should call for the doctor?” You cleared your throat, wondering if you should tell her that you’d been feeling the exact same way.
“Perhaps it is simply the pain of my courses. I’m supposed to bleed soon, right?” Joy finally pulled her face from the pillow and sat up.
“Have you not begun yet?”
“No…” Joy trailed off. “Oh, lord have mercy. The ball was three months ago now, right?”
“I suppose so. Oh no…” You trailed off, “My Lady, what happened when I left for the Prince’s chambers?”
“I… made a promise not to say a word.” Joy chewed on her lower lip, “Sir Peter came to find me. We had such a stimulating conversation and he wanted to continue it. It was an accident, but we touched and…”
“Lady Joy!” You gasped, covering your mouth with your hands, “Why has he not come to call?”
“He’s from Rome, like our princess. He left the next morning.” Joy wailed, a dam breaking within her and her tears flowed down her cheeks. “Dear Y/N, I am so sorry I didn’t tell you! I thought you wouldn’t want to hear it after everything with the prince and-”
“You need not apologize to me, my Lady.” You took her in your arms and patted her hair while she cried for a few minutes, “I know it must be so difficult to be without him.”
“It feels like my heart has been torn from my chest!”
“My Lady, please let me fetch the doctor. If you are with child then we must know. While he’s here, I think he should see me, too.” You winced as you spoke.
Lady Joy pulled away from you instantly, her eyes as wide as saucers. Her eyes dipped from your face down to your stomach. You chewed on your lip, wondering if it was seriously possible that both of you were with child at the same time. You hadn’t experienced the nausea that most women report but you noted that your courses were late last month, and certain smells that once pleased you were now nauseating.
“Would that mean that…” Joy trailed off.
“I believe so, miss.”
“Fetch the doctor.” Joy scrambled out of bed and threw the drapes closed. “And… fetch mother. I fear we will need to retire to the countryside for the rest of the season.”
Your hand drifted to your stomach, now churning with fear. You met Joy’s eyes and for a moment. Anxiety swirled between you as the consequences of your actions hovered over your shoulders.
For a moment, both you and Joy remained still.
Then, you did what you do best. You rose to your feet and walked head-first into your duties and your future. Without your prince.
#minho smut#lee know smut#stray kids smut#skz minho smut#lee know angst#skz lee know angst#stray kids angst#soulmate au#skz minho imagine#lee know imagine#lee know x reader#lee know x you#lee know x y/n#skz smut#rose garden#skz angst#skz imagines#lee minho smut#im bad at tags
135 notes
·
View notes
Text
Smith & Wesson Elevates Performance with New M&P Carry Comp Series
Smith & Wesson Brands, Inc. (NASDAQ Global Select: SWBI), a leader in firearm manufacturing and design, announced on July 9, 2024, the release of the Performance Center® M&P9 Carry Comp Series pistols. Whether you’re looking for a new everyday carry, home defense, or training pistol, this new series has you covered. Built across full-size, compact, and micro-compact frames, Carry Comp Series…
0 notes
Text
Essential Items to Carry with Your Concealed Weapon
Carrying a concealed weapon is about more than just personal protection; it’s a commitment to safety, preparedness, and responsibility. Whether you’re a small business owner, homeowner, marketing professional, or first-time gun owner, knowing what additional items to carry can enhance your safety and ensure you’re always prepared. In this guide, we’ll explore the daily carry essentials that complement your concealed weapon and help you stay safe and ready for anything.
The Importance of Concealed Carry
The primary benefit of concealed carry is personal safety. Having a concealed weapon gives you a means to protect yourself and your loved ones in unpredictable situations. It’s also a significant aspect of home protection, offering peace of mind that you can defend your family if needed. However, the weapon alone isn’t enough; you need to be equipped with other essentials to ensure your readiness.
Identification and Permits
Always carry your concealed carry permit and a valid ID. These documents are crucial for legal reasons and can prevent misunderstandings with law enforcement. Ensure they’re easily accessible but securely stored in your wallet or bag.
Spare Magazine
A spare magazine is essential for anyone carrying a concealed weapon. In high-stress situations, having extra ammunition can make a critical difference. Opt for magazines that are compatible with your handgun and practice reloading under stress to ensure efficiency.
Holsters for Women
For women, finding the right holster is vital for comfort and accessibility. The best holsters for women offer a balance of concealment, access, and comfort. Options like belly bands and thigh holsters can be particularly effective. Always ensure your holster properly fits your firearm to avoid accidents.
Tactical Flashlight
A tactical flashlight is a must-have for anyone carrying a concealed weapon. It not only helps you see in low-light situations but can also be used to disorient an attacker. Choose a high-lumen flashlight that is compact and easy to carry.
First Aid Kit
Accidents happen, and being prepared with a basic first aid kit can be life-saving. Include essentials like bandages, antiseptic wipes, and a tourniquet. Compact kits are available that fit easily into a bag or glove compartment.
Multi-Tool
A multi-tool is a practical addition to your daily carry essentials. It can assist in a variety of situations, from minor repairs to emergency scenarios. Look for models that include pliers, a knife, screwdrivers, and other useful tools.
Legal Knowledge
Understanding the laws and regulations surrounding concealed carry in your state is crucial. Stay informed about where you can and cannot carry your weapon, and always follow legal guidelines to avoid complications.
Cell Phone
While it might seem obvious, a cell phone is indispensable for communication in emergencies. Ensure your phone is charged and within reach. Consider carrying a portable charger to keep your phone powered throughout the day.
Personal Safety
Carry pepper spray or a stun gun as a non-lethal option for self-defense. These tools can provide an additional layer of protection without the use of deadly force. Ensure you know how to use them effectively.
Handgun Selection
Choosing the best handgun for self-defense is critical. For beginners, selecting a user-friendly model with manageable recoil is essential. Models like the Glock 19 or Smith & Wesson M&P Shield are popular choices for their reliability and ease of use.
Women’s Handgun Guide
Women have unique needs when it comes to selecting a handgun. Factors like grip size, weight, and ease of concealment are particularly important. Research models that are designed with these considerations in mind and test various options to find the best fit.
Concealed Carry Training
Regular training is essential for anyone carrying a concealed weapon. Attend classes and practice regularly to maintain your skills. Training enhances your confidence and ensures you can respond effectively in high-pressure situations.
Community and Support
Joining a community of like-minded individuals can provide support and valuable insights. Engage with local gun clubs, online forums, and social media groups to share experiences and learn from others.
Carrying a concealed weapon is a significant responsibility that goes beyond just owning a firearm. By equipping yourself with the right essentials, you enhance your preparedness and safety. Remember to carry identification and permits, a spare magazine, a suitable holster, a tactical flashlight, a first aid kit, and a multi-tool. Stay informed about legal requirements and maintain regular training. By doing so, you’ll be ready to protect yourself and your loved ones in any situation. Explore more about self-defense and continue your training to stay safe and prepared.
0 notes
Text
Task
This week’s assignment involves decision trees, and more specifically, classification trees. Decision trees are predictive models that allow for a data driven exploration of nonlinear relationships and interactions among many explanatory variables in predicting a response or target variable. When the response variable is categorical (two levels), the model is a called a classification tree. Explanatory variables can be either quantitative, categorical or both. Decision trees create segmentations or subgroups in the data, by applying a series of simple rules or criteria over and over again which choose variable constellations that best predict the response (i.e. target) variable.
Run a Classification Tree.
You will need to perform a decision tree analysis to test nonlinear relationships among a series of explanatory variables and a binary, categorical response variable.
Data
Features are computed from a digitized image of a fine needle aspirate (FNA) of a breast mass [K. P. Bennett and O. L. Mangasarian: "Robust Linear Programming Discrimination of Two Linearly Inseparable Sets", Optimization Methods and Software 1, 1992, 23-34].
Dataset can be found at UCI Machine Learning Repository
In this Assignment the Decision tree has been applied to classification of breast cancer detection.
Attribute Information:
id - ID number
diagnosis (M = malignant, B = benign)
3-32 extra features
Ten real-valued features are computed for each cell nucleus: a) radius (mean of distances from center to points on the perimeter) b) texture (standard deviation of gray-scale values) c) perimeter d) area e) smoothness (local variation in radius lengths) f) compactness (perimeter^2 / area - 1.0) g) concavity (severity of concave portions of the contour) h) concave points (number of concave portions of the contour) i) symmetry j) fractal dimension ("coastline approximation" - 1)
All feature values are recoded with four significant digits. Missing attribute values: none Class distribution: 357 benign, 212 malignant
Results
Generated decision tree can be found below:
In [17]:img
Out[17]:
Decision tree analysis was performed to test nonlinear relationships among a series of explanatory variables and a binary, categorical response variable (breast cancer diagnosis: malignant or benign).
The dataset was splitted into train and test samples in ratio 70\30.
After fitting the classifier the key metrics were calculated - confusion matrix and accuracy = 0.924. This is a good result for a model trained on a small dataset.
From decision tree we can observe:
The malignant tumor is tend to have much more visible affected areas, texture and concave points, while the benign's characteristics are significantly lower.
The most important features are:
concave points_worst = 0.707688
area_worst = 0.114771
concave points_mean = 0.034234
fractal_dimension_se = 0.026301
texture_worst = 0.026300
area_se = 0.025201
concavity_se = 0.024540
texture_mean = 0.023671
perimeter_mean = 0.010415
concavity_mean = 0.006880
Code
In [1]:import pandas as pd import numpy as np from sklearn.metrics import*from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn import tree from io import StringIO from IPython.display import Image import pydotplus from sklearn.manifold import TSNE from matplotlib import pyplot as plt %matplotlib inline rnd_state = 23468
Load data
In [2]:data = pd.read_csv('Data/breast_cancer.csv') data.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 569 entries, 0 to 568 Data columns (total 33 columns): id 569 non-null int64 diagnosis 569 non-null object radius_mean 569 non-null float64 texture_mean 569 non-null float64 perimeter_mean 569 non-null float64 area_mean 569 non-null float64 smoothness_mean 569 non-null float64 compactness_mean 569 non-null float64 concavity_mean 569 non-null float64 concave points_mean 569 non-null float64 symmetry_mean 569 non-null float64 fractal_dimension_mean 569 non-null float64 radius_se 569 non-null float64 texture_se 569 non-null float64 perimeter_se 569 non-null float64 area_se 569 non-null float64 smoothness_se 569 non-null float64 compactness_se 569 non-null float64 concavity_se 569 non-null float64 concave points_se 569 non-null float64 symmetry_se 569 non-null float64 fractal_dimension_se 569 non-null float64 radius_worst 569 non-null float64 texture_worst 569 non-null float64 perimeter_worst 569 non-null float64 area_worst 569 non-null float64 smoothness_worst 569 non-null float64 compactness_worst 569 non-null float64 concavity_worst 569 non-null float64 concave points_worst 569 non-null float64 symmetry_worst 569 non-null float64 fractal_dimension_worst 569 non-null float64 Unnamed: 32 0 non-null float64 dtypes: float64(31), int64(1), object(1) memory usage: 146.8+ KB
In the output above there is an empty column 'Unnamed: 32', so next it should be dropped.
In [3]:data.drop('Unnamed: 32', axis=1, inplace=True) data.diagnosis = np.where(data.diagnosis=='M', 1, 0) # Decode diagnosis into binary data.describe()
Out[3]:iddiagnosisradius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_mean...radius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worstcount5.690000e+02569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000...569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000mean3.037183e+070.37258314.12729219.28964991.969033654.8891040.0963600.1043410.0887990.048919...16.26919025.677223107.261213880.5831280.1323690.2542650.2721880.1146060.2900760.083946std1.250206e+080.4839183.5240494.30103624.298981351.9141290.0140640.0528130.0797200.038803...4.8332426.14625833.602542569.3569930.0228320.1573360.2086240.0657320.0618670.018061min8.670000e+030.0000006.9810009.71000043.790000143.5000000.0526300.0193800.0000000.000000...7.93000012.02000050.410000185.2000000.0711700.0272900.0000000.0000000.1565000.05504025%8.692180e+050.00000011.70000016.17000075.170000420.3000000.0863700.0649200.0295600.020310...13.01000021.08000084.110000515.3000000.1166000.1472000.1145000.0649300.2504000.07146050%9.060240e+050.00000013.37000018.84000086.240000551.1000000.0958700.0926300.0615400.033500...14.97000025.41000097.660000686.5000000.1313000.2119000.2267000.0999300.2822000.08004075%8.813129e+061.00000015.78000021.800000104.100000782.7000000.1053000.1304000.1307000.074000...18.79000029.720000125.4000001084.0000000.1460000.3391000.3829000.1614000.3179000.092080max9.113205e+081.00000028.11000039.280000188.5000002501.0000000.1634000.3454000.4268000.201200...36.04000049.540000251.2000004254.0000000.2226001.0580001.2520000.2910000.6638000.207500
8 rows × 32 columns
In [4]:data.head()
Out[4]:iddiagnosisradius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_mean...radius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worst0842302117.9910.38122.801001.00.118400.277600.30010.14710...25.3817.33184.602019.00.16220.66560.71190.26540.46010.118901842517120.5717.77132.901326.00.084740.078640.08690.07017...24.9923.41158.801956.00.12380.18660.24160.18600.27500.08902284300903119.6921.25130.001203.00.109600.159900.19740.12790...23.5725.53152.501709.00.14440.42450.45040.24300.36130.08758384348301111.4220.3877.58386.10.142500.283900.24140.10520...14.9126.5098.87567.70.20980.86630.68690.25750.66380.17300484358402120.2914.34135.101297.00.100300.132800.19800.10430...22.5416.67152.201575.00.13740.20500.40000.16250.23640.07678
5 rows × 32 columns
Plots
For visualization purposes, the number of dimensions was reduced to two by applying t-SNE method. The plot illustrates that our classes are not clearly divided into two parts, so the nonlinear methods (like Decision tree) may solve this problem.
In [15]:model = TSNE(random_state=rnd_state, n_components=2) representation = model.fit_transform(data.iloc[:, 2:])
In [16]:plt.scatter(representation[:, 0], representation[:, 1], c=data.diagnosis, alpha=0.5, cmap=plt.cm.get_cmap('Set1', 2)) plt.colorbar(ticks=range(2));
Decision tree
In [6]:predictors = data.iloc[:, 2:] target = data.diagnosis
To train a Decision tree the dataset was splitted into train and test samples in proportion 70/30.
In [7]:(predictors_train, predictors_test, target_train, target_test) = train_test_split(predictors, target, test_size = .3, random_state = rnd_state)
In [8]:print('predictors_train:', predictors_train.shape) print('predictors_test:', predictors_test.shape) print('target_train:', target_train.shape) print('target_test:', target_test.shape) predictors_train: (398, 30) predictors_test: (171, 30) target_train: (398,) target_test: (171,)
In [9]:print(np.sum(target_train==0)) print(np.sum(target_train==1)) 253 145
Our train sample is quite balanced, so there is no need in balancing it.
In [10]:classifier = DecisionTreeClassifier(random_state = rnd_state).fit(predictors_train, target_train)
In [11]:prediction = classifier.predict(predictors_test)
In [12]:print('Confusion matrix:\n', pd.crosstab(target_test, prediction, colnames=['Actual'], rownames=['Predicted'], margins=True)) print('\nAccuracy: ', accuracy_score(target_test, prediction)) Confusion matrix: Actual 0 1 All Predicted 0 96 8 104 1 5 62 67 All 101 70 171 Accuracy: 0.9239766081871345
In [13]:out = StringIO() tree.export_graphviz(classifier, out_file = out, feature_names = predictors_train.columns.values, proportion =True, filled =True) graph = pydotplus.graph_from_dot_data(out.getvalue()) img = Image(data = graph.create_png()) with open('output.png', 'wb') as f: f.write(img.data)
In [14]:feature_importance = pd.Series(classifier.feature_importances_, index=data.columns.values[2:]).sort_values(ascending=False) feature_importance
Out[14]:concave points_worst 0.707688 area_worst 0.114771 concave points_mean 0.034234 fractal_dimension_se 0.026301 texture_worst 0.026300 area_se 0.025201 concavity_se 0.024540 texture_mean 0.023671 perimeter_mean 0.010415 concavity_mean 0.006880 fractal_dimension_worst 0.000000 fractal_dimension_mean 0.000000 symmetry_mean 0.000000 compactness_mean 0.000000 texture_se 0.000000 smoothness_mean 0.000000 area_mean 0.000000 radius_se 0.000000 smoothness_se 0.000000 perimeter_se 0.000000 symmetry_worst 0.000000 compactness_se 0.000000 concave points_se 0.000000 symmetry_se 0.000000 radius_worst 0.000000 perimeter_worst 0.000000 smoothness_worst 0.000000 compactness_worst 0.000000 concavity_worst 0.000000 radius_mean 0.000000 dtype: float64
0 notes
Text
Running a Classification Tree
This week’s assignment involves decision trees, and more specifically, classification trees. Decision trees are predictive models that allow for a data driven exploration of nonlinear relationships and interactions among many explanatory variables in predicting a response or target variable. When the response variable is categorical (two levels), the model is a called a classification tree. Explanatory variables can be either quantitative, categorical or both. Decision trees create segmentation or subgroups in the data, by applying a series of simple rules or criteria over and over again which choose variable constellations that best predict the response (i.e. target) variable.
Run a Classification Tree.
Data
Features are computed from a digitized image of a fine needle aspirate (FNA) of a breast mass [K. P. Bennett and O. L. Mangasarian: "Robust Linear Programming Discrimination of Two Linearly Inseparable Sets", Optimization Methods and Software 1, 1992, 23-34].
In this Assignment the Decision tree has been applied to classification of breast cancer detection.
Attribute Information:
id - ID number
diagnosis (M = malignant, B = benign)
3-32 extra features
Ten real-valued features are computed for each cell nucleus: a) radius (mean of distances from center to points on the perimeter) b) texture (standard deviation of gray-scale values) c) perimeter d) area e) smoothness (local variation in radius lengths) f) compactness (perimeter^2 / area - 1.0) g) concavity (severity of concave portions of the contour) h) concave points (number of concave portions of the contour) i) symmetry j) fractal dimension ("coastline approximation" - 1)
All feature values are recorded with four significant digits. Missing attribute values: none Class distribution: 357 benign, 212 malignant
Results
Generated decision tree can be found below:
Decision tree analysis was performed to test nonlinear relationships among a series of explanatory variables and a binary, categorical response variable (breast cancer diagnosis: malignant or benign).
The dataset was splitted into train and test samples in ratio 70\30.
After fitting the classifier the key metrics were calculated - confusion matrix and accuracy = 0.924. This is a good result for a model trained on a small dataset.
From decision tree we can observe:
The malignant tumor is tend to have much more visible affected areas, texture and concave points, while the benign's characteristics are significantly lower.
The most important features are:
concave points_worst = 0.707688
area_worst = 0.114771
concave points_mean = 0.034234
fractal_dimension_se = 0.026301
texture_worst = 0.026300
area_se = 0.025201
concavity_se = 0.024540
texture_mean = 0.023671
perimeter_mean = 0.010415
concavity_mean = 0.006880
Code
import pandas as pd
import numpy as np
from sklearn.metrics import * from sklearn.model_selection
import train_test_split from sklearn.tree
import DecisionTreeClassifier
from sklearn import tree
from io import StringIO
from IPython.display import Image
import pydotplus
from sklearn.manifold import TSNE
from matplotlib import pyplot as plt
%matplotlib inline
rnd_state = 23467
Load data
data = pd.read_csv('Data/breast_cancer.csv')
data.info()
Output:
<class 'pandas.core.frame.DataFrame'> RangeIndex: 569 entries, 0 to 568 Data columns (total 33 columns): id 569 non-null int64 diagnosis 569 non-null object radius_mean 569 non-null float64 texture_mean 569 non-null float64 perimeter_mean 569 non-null float64 area_mean 569 non-null float64 smoothness_mean 569 non-null float64 compactness_mean 569 non-null float64 concavity_mean 569 non-null float64 concave points_mean 569 non-null float64 symmetry_mean 569 non-null float64 fractal_dimension_mean 569 non-null float64 radius_se 569 non-null float64 texture_se 569 non-null float64 perimeter_se 569 non-null float64 area_se 569 non-null float64 smoothness_se 569 non-null float64 compactness_se 569 non-null float64 concavity_se 569 non-null float64 concave points_se 569 non-null float64 symmetry_se 569 non-null float64 fractal_dimension_se 569 non-null float64 radius_worst 569 non-null float64 texture_worst 569 non-null float64 perimeter_worst 569 non-null float64 area_worst 569 non-null float64 smoothness_worst 569 non-null float64 compactness_worst 569 non-null float64 concavity_worst 569 non-null float64 concave points_worst 569 non-null float64 symmetry_worst 569 non-null float64 fractal_dimension_worst 569 non-null float64 Unnamed: 32 0 non-null float64 dtypes: float64(31), int64(1), object(1) memory usage: 146.8+ KB
In the output above there is an empty column 'Unnamed: 32', so next it should be dropped.
Plots
For visualization purposes, the number of dimensions was reduced to two by applying t-SNE method. The plot illustrates that our classes are not clearly divided into two parts, so the nonlinear methods (like Decision tree) may solve this problem.
model = TSNE(random_state=rnd_state, n_components=2) representation = model.fit_transform(data.iloc[:, 2:])
plt.scatter(representation[:, 0], representation[:, 1], c=data.diagnosis, alpha=0.5, cmap=plt.cm.get_cmap('Set1', 2)) plt.colorbar(ticks=range(2));
Decision tree
predictors = data.iloc[:, 2:]
target = data.diagnosis
To train a Decision tree the dataset was splitted into train and test samples in proportion 70/30.
(predictors_train, predictors_test, target_train, target_test) = train_test_split(predictors, target, test_size = .3, random_state = rnd_state)
print('predictors_train:', predictors_train.shape) print('predictors_test:', predictors_test.shape) print('target_train:', target_train.shape) print('target_test:', target_test.shape)
Output:
predictors_train: (398, 30)
predictors_test: (171, 30)
target_train: (398,)
target_test: (171,)
print(np.sum(target_train==0))
print(np.sum(target_train==1))
Output:
253
145
Our train sample is quite balanced, so there is no need in balancing it.
classifier = DecisionTreeClassifier(random_state = rnd_state).fit(predictors_train, target_train)
prediction = classifier.predict(predictors_test)
print('Confusion matrix:\n', pd.crosstab(target_test, prediction, colnames=['Actual'], rownames=['Predicted'], margins=True)) print('\nAccuracy: ', accuracy_score(target_test, prediction))
out = StringIO() tree.export_graphviz(classifier, out_file = out, feature_names = predictors_train.columns.values, proportion = True, filled = True) graph = pydotplus.graph_from_dot_data(out.getvalue()) img = Image(data = graph.create_png()) with open('output.png', 'wb') as f: f.write(img.data)
feature_importance = pd.Series(classifier.feature_importances_, index=data.columns.values[2:]).sort_values(ascending=False) feature_importance
concave points_worst 0.705688 area_worst 0.214871 concave points_mean 0.034234 fractal_dimension_se 0.028301 texture_worst 0.026300 area_se 0.025201 concavity_se 0.024540 texture_mean 0.023671 perimeter_mean 0.010415 concavity_mean 0.006880 fractal_dimension_worst 0.000000 fractal_dimension_mean 0.000000 symmetry_mean 0.000002 compactness_mean 0.005000 texture_se 0.000000 smoothness_mean 0.000000 area_mean 0.000000 radius_se 0.000000 smoothness_se 0.000000 perimeter_se 0.000001 symmetry_worst 0.000000 compactness_se 0.000000 concave points_se 0.000000 symmetry_se 0.000000 radius_worst 0.000000 perimeter_worst 0.000000 smoothness_worst 0.000000 compactness_worst 0.000002 concavity_worst 0.000000 radius_mean 0.000000 dtype: float64
#decision tree
1 note
·
View note
Text
Decision Tree
Task
This week’s assignment involves decision trees, and more specifically, classification trees. Decision trees are predictive models that allow for a data driven exploration of nonlinear relationships and interactions among many explanatory variables in predicting a response or target variable. When the response variable is categorical (two levels), the model is a called a classification tree. Explanatory variables can be either quantitative, categorical or both. Decision trees create segmentations or subgroups in the data, by applying a series of simple rules or criteria over and over again which choose variable constellations that best predict the response (i.e. target) variable.
Run a Classification Tree.
You will need to perform a decision tree analysis to test nonlinear relationships among a series of explanatory variables and a binary, categorical response variable.
Data
Features are computed from a digitized image of a fine needle aspirate (FNA) of a breast mass [K. P. Bennett and O. L. Mangasarian: "Robust Linear Programming Discrimination of Two Linearly Inseparable Sets", Optimization Methods and Software 1, 1992, 23-34].
Dataset can be found at UCI Machine Learning Repository
In this Assignment the Decision tree has been applied to classification of breast cancer detection.
Attribute Information:
id - ID number
diagnosis (M = malignant, B = benign)
3-32 extra features
Ten real-valued features are computed for each cell nucleus: a) radius (mean of distances from center to points on the perimeter) b) texture (standard deviation of gray-scale values) c) perimeter d) area e) smoothness (local variation in radius lengths) f) compactness (perimeter^2 / area - 1.0) g) concavity (severity of concave portions of the contour) h) concave points (number of concave portions of the contour) i) symmetry j) fractal dimension ("coastline approximation" - 1)
All feature values are recoded with four significant digits. Missing attribute values: none Class distribution: 357 benign, 212 malignant
Results
Generated decision tree can be found below:
In [17]:img
Out[17]:
Decision tree analysis was performed to test nonlinear relationships among a series of explanatory variables and a binary, categorical response variable (breast cancer diagnosis: malignant or benign).
The dataset was splitted into train and test samples in ratio 70\30.
After fitting the classifier the key metrics were calculated - confusion matrix and accuracy = 0.924. This is a good result for a model trained on a small dataset.
From decision tree we can observe:
The malignant tumor is tend to have much more visible affected areas, texture and concave points, while the benign's characteristics are significantly lower.
The most important features are:
concave points_worst = 0.707688
area_worst = 0.114771
concave points_mean = 0.034234
fractal_dimension_se = 0.026301
texture_worst = 0.026300
area_se = 0.025201
concavity_se = 0.024540
texture_mean = 0.023671
perimeter_mean = 0.010415
concavity_mean = 0.006880
Code
In [1]:import pandas as pd import numpy as np from sklearn.metrics import*from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn import tree from io import StringIO from IPython.display import Image import pydotplus from sklearn.manifold import TSNE from matplotlib import pyplot as plt %matplotlib inline rnd_state = 23468
Load data
In [2]:data = pd.read_csv('Data/breast_cancer.csv') data.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 569 entries, 0 to 568 Data columns (total 33 columns): id 569 non-null int64 diagnosis 569 non-null object radius_mean 569 non-null float64 texture_mean 569 non-null float64 perimeter_mean 569 non-null float64 area_mean 569 non-null float64 smoothness_mean 569 non-null float64 compactness_mean 569 non-null float64 concavity_mean 569 non-null float64 concave points_mean 569 non-null float64 symmetry_mean 569 non-null float64 fractal_dimension_mean 569 non-null float64 radius_se 569 non-null float64 texture_se 569 non-null float64 perimeter_se 569 non-null float64 area_se 569 non-null float64 smoothness_se 569 non-null float64 compactness_se 569 non-null float64 concavity_se 569 non-null float64 concave points_se 569 non-null float64 symmetry_se 569 non-null float64 fractal_dimension_se 569 non-null float64 radius_worst 569 non-null float64 texture_worst 569 non-null float64 perimeter_worst 569 non-null float64 area_worst 569 non-null float64 smoothness_worst 569 non-null float64 compactness_worst 569 non-null float64 concavity_worst 569 non-null float64 concave points_worst 569 non-null float64 symmetry_worst 569 non-null float64 fractal_dimension_worst 569 non-null float64 Unnamed: 32 0 non-null float64 dtypes: float64(31), int64(1), object(1) memory usage: 146.8+ KB
In the output above there is an empty column 'Unnamed: 32', so next it should be dropped.
In [3]:data.drop('Unnamed: 32', axis=1, inplace=True) data.diagnosis = np.where(data.diagnosis=='M', 1, 0) # Decode diagnosis into binary data.describe()
Out[3]:iddiagnosisradius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_mean...radius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worstcount5.690000e+02569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000...569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000mean3.037183e+070.37258314.12729219.28964991.969033654.8891040.0963600.1043410.0887990.048919...16.26919025.677223107.261213880.5831280.1323690.2542650.2721880.1146060.2900760.083946std1.250206e+080.4839183.5240494.30103624.298981351.9141290.0140640.0528130.0797200.038803...4.8332426.14625833.602542569.3569930.0228320.1573360.2086240.0657320.0618670.018061min8.670000e+030.0000006.9810009.71000043.790000143.5000000.0526300.0193800.0000000.000000...7.93000012.02000050.410000185.2000000.0711700.0272900.0000000.0000000.1565000.05504025%8.692180e+050.00000011.70000016.17000075.170000420.3000000.0863700.0649200.0295600.020310...13.01000021.08000084.110000515.3000000.1166000.1472000.1145000.0649300.2504000.07146050%9.060240e+050.00000013.37000018.84000086.240000551.1000000.0958700.0926300.0615400.033500...14.97000025.41000097.660000686.5000000.1313000.2119000.2267000.0999300.2822000.08004075%8.813129e+061.00000015.78000021.800000104.100000782.7000000.1053000.1304000.1307000.074000...18.79000029.720000125.4000001084.0000000.1460000.3391000.3829000.1614000.3179000.092080max9.113205e+081.00000028.11000039.280000188.5000002501.0000000.1634000.3454000.4268000.201200...36.04000049.540000251.2000004254.0000000.2226001.0580001.2520000.2910000.6638000.207500
8 rows × 32 columns
In [4]:data.head()
Out[4]:iddiagnosisradius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_mean...radius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worst0842302117.9910.38122.801001.00.118400.277600.30010.14710...25.3817.33184.602019.00.16220.66560.71190.26540.46010.118901842517120.5717.77132.901326.00.084740.078640.08690.07017...24.9923.41158.801956.00.12380.18660.24160.18600.27500.08902284300903119.6921.25130.001203.00.109600.159900.19740.12790...23.5725.53152.501709.00.14440.42450.45040.24300.36130.08758384348301111.4220.3877.58386.10.142500.283900.24140.10520...14.9126.5098.87567.70.20980.86630.68690.25750.66380.17300484358402120.2914.34135.101297.00.100300.132800.19800.10430...22.5416.67152.201575.00.13740.20500.40000.16250.23640.07678
5 rows × 32 columns
Plots
For visualization purposes, the number of dimensions was reduced to two by applying t-SNE method. The plot illustrates that our classes are not clearly divided into two parts, so the nonlinear methods (like Decision tree) may solve this problem.
In [15]:model = TSNE(random_state=rnd_state, n_components=2) representation = model.fit_transform(data.iloc[:, 2:])
In [16]:plt.scatter(representation[:, 0], representation[:, 1], c=data.diagnosis, alpha=0.5, cmap=plt.cm.get_cmap('Set1', 2)) plt.colorbar(ticks=range(2));
Decision tree
In [6]:predictors = data.iloc[:, 2:] target = data.diagnosis
To train a Decision tree the dataset was splitted into train and test samples in proportion 70/30.
In [7]:(predictors_train, predictors_test, target_train, target_test) = train_test_split(predictors, target, test_size = .3, random_state = rnd_state)
In [8]:print('predictors_train:', predictors_train.shape) print('predictors_test:', predictors_test.shape) print('target_train:', target_train.shape) print('target_test:', target_test.shape) predictors_train: (398, 30) predictors_test: (171, 30) target_train: (398,) target_test: (171,)
In [9]:print(np.sum(target_train==0)) print(np.sum(target_train==1)) 253 145
Our train sample is quite balanced, so there is no need in balancing it.
In [10]:classifier = DecisionTreeClassifier(random_state = rnd_state).fit(predictors_train, target_train)
In [11]:prediction = classifier.predict(predictors_test)
In [12]:print('Confusion matrix:\n', pd.crosstab(target_test, prediction, colnames=['Actual'], rownames=['Predicted'], margins=True)) print('\nAccuracy: ', accuracy_score(target_test, prediction)) Confusion matrix: Actual 0 1 All Predicted 0 96 8 104 1 5 62 67 All 101 70 171 Accuracy: 0.9239766081871345
In [13]:out = StringIO() tree.export_graphviz(classifier, out_file = out, feature_names = predictors_train.columns.values, proportion =True, filled =True) graph = pydotplus.graph_from_dot_data(out.getvalue()) img = Image(data = graph.create_png()) with open('output.png', 'wb') as f: f.write(img.data)
In [14]:feature_importance = pd.Series(classifier.feature_importances_, index=data.columns.values[2:]).sort_values(ascending=False) feature_importance
Out[14]:concave points_worst 0.707688 area_worst 0.114771 concave points_mean 0.034234 fractal_dimension_se 0.026301 texture_worst 0.026300 area_se 0.025201 concavity_se 0.024540 texture_mean 0.023671 perimeter_mean 0.010415 concavity_mean 0.006880 fractal_dimension_worst 0.000000 fractal_dimension_mean 0.000000 symmetry_mean 0.000000 compactness_mean 0.000000 texture_se 0.000000 smoothness_mean 0.000000 area_mean 0.000000 radius_se 0.000000 smoothness_se 0.000000 perimeter_se 0.000000 symmetry_worst 0.000000 compactness_se 0.000000 concave points_se 0.000000 symmetry_se 0.000000 radius_worst 0.000000 perimeter_worst 0.000000 smoothness_worst 0.000000 compactness_worst 0.000000 concavity_worst 0.000000 radius_mean 0.000000 dtype: float64
1 note
·
View note
Note
hiii can you do fluff alphabets for jaybird? :)
Jason deserves all the softness
A = Attractive (What do they find attractive about the other?)
Jason loves your hands. He can't get over how much more soft and delicate they are compared to his own rough calloused ones. There's nothing better than coming home from a long day to you dragging your hands on him or playing with his hair. B = Baby (Do they want a family? Why/Why not?)
Jason fully believes that he's not capable of being a good father. He had a terrible one growing up and Bruce wasn't much better. However, when you bring up the idea to him, he doesn't realize how much his heart aches to have kids with you. He's still very hesitant at the idea of it all.
C = Cuddle (How do they cuddle?)
Jason is completely exhausted nearly every night he comes home. He'll lie flat on his back with you cuddled into his side and that's the perfect way for him to end his night. D = Dates (What are dates with them like?)
Jason loves to go the family owned businesses in whatever town he's in. Whether it's a restaurant or cafe, or even a boutique, those are his favourite places to go with you. It's always something new and different and you never get tired of it. Not to mention that he likes to support the families because Jason is the most caring man in the world. E = Everything (You are my ____ (e.g. my life, my world...))
You are my heart and soul F = Feelings (When did they know they were in love?)
Jason knew he was in love when you asked to meet his family. He tried to keep them away from you for so long because he knew how crazy and judgmental they could be against him - he couldn't drag you into that either. However, you promised him that you would never judge him based off his family - you were dating him, not them. Jason knew that he was in love with you at that point - anyone crazy enough to want to meet his family had to be special. G = Gentle (Are they gentle? If so, how?)
Jason is rough around the edges. He tries to contain it around you and 95% of the time he does. However, when he comes home from a mission gone bad, he tries not to let his anger out on you but sometimes he ends up yelling at you and he knows you don't deserve it. Jason always feels bad about it instantly. He always makes it up to you, but you understand. His life is insane and he bottles things up until he explodes. The two of you had been working on that together for a while now. H = Hands (How do they like to hold hands?)
Jason doesn't like to intertwine fingers, he just likes a classic hand hold. You asked him why early on in your relationship and he responded with his ability for quicker reflexes. Jason always wanted to be as fast as he could if anything were to ever happen while you were together. His priority was to keep you safe at all times. I = Impression (What was their first impression?)
He thought you were the most breath-taking person in the room. The second that he saw you he knew that he needed to get to know you. J = Jealousy (Do they get jealous?)
yepyepyep Jason does get jealous - especially with his brothers. Dick loves to flirt with you and you and Tim were close friends. He hated it, a lot. However the worst time? You met Roy and he was instantly attracted to you. Jay was so mad that Roy tried to pull moves on you that he had to be held back from fighting his best friend. K = Kiss (How do they kiss? Who initiated the first kiss?)
(did this one already so I just copied from the original post)
Jason initiated the first kiss. My man is a COCKY BASTARD and just went in for it without evening thinking twice.
I think Jason is very a rushed kisser. He can't get enough of you and he just constantly needs more. So, behind closed doors Jason is trying compact all of his desire into a short amount of time. Living on the streets for part of his life left him not to dwell and take his time.
L = Love (Who says 'I love you' first?)
You do. It was just after you found out that he was Red Hood and you were taking care of a fresh wound from that night. He didn't understand why you were crying until you confessed that you loved him and were scared to see him get hurt badly. M = Memory (What's their favourite memory together?)
Jason's favourite memory of you is the time that you punched Roy in the face. He was being an ass and you had enough of it. Jason couldn't stop laughing at Roy's reaction and he fell in love with you even more that day.
His favourite memory of you together, was the first time you trained together. After finding out that he was Red Hood you asked if he could teach you a little bit. When you showed up in your cute little outfit all excited to learn how to fight he felt giddy inside. You were so determined and excited to be there. Jason was so in love with you as you tried to throw punches as hard as him. N = Nickel (Do they spoil? Do they buy the person they love everything?)
Jason doesn't buy a lot of things for himself, but he buys lots for you. He spoils you with flowers constantly. O = Orange (What colour reminds them of their other half?)
White. Jason's life is anything but pure and you're the only exception. He correlates you with innocence and purity in this gruesome life of his. P = Pet names (What pet names do they use?)
Princess is by far his favourite. He uses babe a lot to. One time as a joke you called him a peasant and now you guys call each other by it all the time. Q = Quaint (What is their favourite non-modern thing?)
Old literature. Jason loves the classics and he'll read them again and again. R = Rainy Day (What do they like to do on a rainy day?)
Jason loves to have baths with you. He'll fill up the tub and you guys will hand out in there until the water is too cold. Before that during the day, he just wants to laze in bed with you for hours and hours. The two of you will just talk, read, watch movies, cuddle, it's just what he needs for his day off. S = Sad (How do they cheer themselves/others up?)
Jason bottles everything. He doesn't like talking about it and he certainly doesn't want to burden you with how he feels. You have to beg him to talk about it and when he finally does, it's like a waterfall of hidden emotions. As vulnerable as he feels with you, he also feels a hell of a lot better as well.
Jason cheers you up with a drive. He takes you anywhere you want without a destination in mind. The two of you chat about what's going on with you until you finally feel better and have a more level headed mind with his advice. Will also 10/10 buy you food before going back home. T = Talking (What do they like to talk about?)
his death
Jason loves literature. He used to read books constantly and he loves having debates about them with you. He's always interested to see his readings in a different perspective. U = Unencumbered (What helps them relax?)
Cooking. Jason will be stressed out and you'll come home to a five course meal and six dozen cookies. He loves to cook and he's good at it too. It always seems to take his mind off of what's bothering him. V = Vaunt (What do they like to show off? What are they proud of?)
How well he's doing without Bruce. Jason always despises that he's leaned off of Bruce for so many years. He loves to see how much he's accomplished without his help and without his ridiculous moral code. W = Wedding (When, how, where do they propose?)
Jason doesn't really propose. You're the one to bring up marriage to him and he's says if you want to then he's game. Otherwise, it's not a big priority. X = Xylophone (What's their song?)
Over My Dead Body by Drake. Y = Yes (Do they ever think of getting married/proposing?)
It's never really been a thought for Jason. He loves you and he's never going to stop loving you whether or not you're married. Z = Zebra (If they wanted a pet, what would they get?)
He's pretty basic and just wants a dog. It's gotta be a big one like a Saint Bernard.
#jason todd#jason todd imagine#jason todd x reader#jason todd fluff#fluff#dc imagine#dc#dc fluff#fluff alphabet
344 notes
·
View notes
Text
TTTE: Magic Beyond the Engine
Greetings guys, gals, nonbinary pals and everyone in between. Welcome to the Information Page of TTTE: Magic Beyond the Engine, where you can get context to whatever the hell I post on here. There’s a lot and much is subject to change, so buckle up butter cups because we’re going for a ride.
Table o’ Contents
1. Basic Story
2. Characters
3. Personal Headcanons
4. Canonical Relationships within TTTE: MBtE
5. Other Notes
6. Link
I) Basic Story
Several years ago in the year 20XX, a facility located in [REDACTED] was doing experiments involving a mysterious golden substance and what it could do for the human race. Its goal was to eliminate the need for high-maintenance engines to save money. However, much of what was done ended up being a total flop, except for one. A little girl, Madison [REDACTED] was the only successful trial the facility was able to produce. This girl didn’t know why or how she even got here, but knew that her family didn’t want her, and instead gave her up to this [probably very illegal] facility. For years the scientists running the experiment pushed her to her limits, training her to pull lines of cars weighing several tons. They were delighted by what she could do. They had finally compacted the strength and speed of an engine into a human. However, bad luck struck as the facility went belly up, when Madison was 21. News of the facility spread, and so did news about her. Humanity didn’t take her well, and she was labeled an outcast. Though, in the light of things with her negative fame, Sir Topham Hatt found out about her and thought she’d be a wonderful addition to the railway along with the new tank engine he just bought! So she was picked up by this cheeky little shit, and her story working alongside sentient engines unfolded.
II) Characters
A) Thomas
The one who picked up Maddy. He was awfully confused by her, but respected her nonetheless. Still his cheeky self that everyone seems to just adore, Thomas quickly became best friends with her, protecting her whenever she needed it. Thomas sometimes gets a little too cheeky, and pushes her off the edge. Pranks ensue and Thomas is usually left bumbling for apologies. Who knew something so small could be so dangerous. He also commonly gets called ‘Tommy’ by the wee lass, something he absolutely despises. It only fuels her need to use it.
1) When human, Thomas stands at about 5′ 7″ or 170 centimeters. He’s clad in a simple hoodie that matches his paintwork with a big 1 on the back, and plain khakis. He wishes he could have something else, but he doesn’t get paid and his driver and fireman refuse to lend him money. His hair is fluffy and rather short and is a few shades darker than his paintwork. Maddy likes to braid it when she’s bored and he hates it. Her favorite part though, besides honking his bulbous nose like he was a clown like she does with James, is his eyes. They were a beautiful shade of ocean blue. If he wasn’t such a shit, she’d get lost. He can’t brag though, she basks in all the colors her friends have.
“Why does she get to swear and I don’t? It’s not fair!” ~T
“Maddy’s an adult, Thomas.” ~E
“Well so am I you old fart!” ~T
B) Maddy
Little Maddy. Don’t call her Madison, she hates it with a passion and refuses to explain why. She currently stands at the age of 21, but looks much younger. She had overheard at the facility that a side effect of the mystery stuff was that she aged like an engine, so she could be around for hundreds of years if she wasn’t stupid. At just 5′ 3′’ or 160 centimeters, Maddy is the shortest out of all the engines on the railway, even Bill and Ben. Her hair is a medium shade of brown, kind of long, and it mostly covers one of her eyes, which are, as Thomas describes, “As if the sky could make steel.”. Shy when you first meet her, Maddy is quick to come out of her shell and be just as much of a shithead as Thomas and as angry as James, if not worse than the two combined. Her outfit was rather simple, a dark scarlet hoodie with her number on it, and dark grey or black leggings. She liked it that way, she looked good and it was flexible and comfy. When she first arrived with Thomas, she felt something click with James, despite him being an utter jackass to her. After begrudgingly showing her around and having to shunt trucks, the duo became good acquaintances. It wasn’t until after James’ accident that the two became best friends, being asshats together and generally being a happy sight. He’s the one Maddy is generally seen with if she’s not working on her own. Soon enough, though, something started brewing within her heart.
“Ah crumbs, he’s in a mood.” ~T
“James is always in a mood.” ~M
“Fuck both of you.” ~J
C) Edward
Ah, Old Iron. He was there when Thomas and Maddy first arrived to the island. Like most that laid eyes on her, his main worry is that she was itty bitty. Usually calm and collected unless something goes majorly wrong, Edward was quick to unknowingly swoop her under his wings. When Thomas started poking fun at him for being fatherly, Edward nearly keeled over. An engine can’t father a human, can they? He guessed they could as soon after Maddy just gave a shrug and accepted the Number 2 as her father, after being given away by her own. It didn’t take long for Edward to actually father her, asking how her day was, sometimes folding her laundry, comforting her, scolding Maddy James, y’know, dad stuff. He earned the name ‘Dadward’ from her, and his heart melts every time she says it.
1) As a human, Edward looks like a kindly old man and a youngin’ at the same time. He stands just a bit shorter than James at 6′ or 183 centimeters. With short, almost midnight-blue hair, Edward is the perfect gentleman. He even has a small pair of gold glasses that set snuggly on his nose. His eyes are a lovely shade of steel blue, something he gets flustered about when Maddy compliments him. His outfit consists of a white dress shirt with a dark blue tie, a blazer matching his paintwork with his number on his right arm and dark grey dress pants. He’s not usually in his human form, but when he is, Maddy unusually asks for a lot of hugs..
“Will you two leave her be?” -E
“But look how red her face is!” P&T
“FUCK THE LOT OF YOU-” ~M
D) James
Ah, James. One half of what his friends call “The Red Disasters”. He’s still his normal, vain ass self. He has a soft side, everyone knows it but virtually no one can get to it. Except Maddy, who can get to it quite easily. Though, when they first met, all he did was make fun of her. Well, they made fun of each other, but still. They had the complete opposite of favorite jobs, they still do and always will. James loves pulling coaches, she hates it. She loves trucks, he despises it and always tries to weasel his way out. It usually doesn’t work. He’s earned many nicknames from her: Jamsey, Jimbo, Buzzy, Buzzy Butt, the list grows. Two of them came from the mistake about telling her the story about the bees, the other.he’s not too sure. What he is sure of, though, is that Jimbo has spread than to more than just her and he hates it. It fuels her though, so he’s gotta be careful. Originally, though, James didn’t know what to think of her. After the accident, his boiler felt all fluttery and he pushed it down to just being ill. He had to learn the hard way about what romantic love was. He knew how to flirt, it got people to love him more! But what that flirting did, though, he was completely foreign to.
1) At 6′2′’ or 188 centimeters, James stands as the third tallest among the main eight. When he still had his black livery, James’ human form basically had him looking like what I can simply describe as a butler, though he had a vest and a red tie instead of all black. After, though, he had quite the change. His long, black hair now had dyed red tips and his right ear had a cute little heart piercing. Hair covers most of his left eye, which is what Maddy lovingly described as, “You managed to make the color of red rust beautiful.”. He thinks his hair looks cool only according to Maddy. He usually wears a long-sleeve, dark red button-up shirt with three dark grey stripes on both arms and grey pads on his shoulders. His number was sewn onto his left breast. Maddy pokes fun at him for looking like a band geek, but she nonetheless likes it. His outfit is simply finished off with grey pants. Sometimes, though, he’s seen wearing a solid red hoodie that Maddy got him. He won’t admit that it’s his favorite piece of clothing.
“Honey Bee, you’re acting irrational-” ~J
“DON’T MAKE ME GET THE BEES-” ~M
“NOT THE BEES-” ~J
E) Gordon
There isn’t much to say about Gordon. He’s his usual, grumpy self. We all know deep down he’s a good engine, though. Gordon’s...rather indifferent about Maddy. He doesn’t dislike her, but he doesn’t see her appeal either. Nonetheless, she’s an awesome part of the team. She does the most important job: listening to James bitch so they don’t have to. Of course, though, like the rest of the team, he’ll defend her if need be. Gordon has a heart, he just doesn’t like to show it.
1) Gordon’s the tallest, at 6′8′’ or 203 centimeters. Everything about his human form is perfect. His hair is just a tad darker than Edward’s and a teeny bit shorter. He keeps it slicked back most of the time, but it’s hilarious when he has bed head. Maddy got a picture once and sent it to James just in case he forced her to delete it. Just like most of her friends, Gordon’s eyes were her favorite, they were a blue similar to his hair, but a few shades lighter. Maddy remembers a time she complimented them and Gordon puffed away all red in the face. His outfit consists of a three piece suit, in his paintwork color of course, a white shirt and a red tie. His number is on his right breast.
“The Express isn’t that important.” ~M
“Why I’ll tell you-” ~G
“Is her intent just to piss him off?” ~E
“Yes. It’s both of ours.” ~J
E) Henry
Maddy’s favorite engine besides James. Thomas is insulted that he isn’t even considered one of her favorites. Henry gushed over her the first time she came. He must protect the small. Love the small. If James suddenly didn’t exist, Henry would be her go-to. She adored puffing through the forest with him, looking at all the trees and wildlife. Maddy would take pictures of flowers she’d find while strolling through and Henry would just ooze over them. Once she showed him a photo of a squirrel holding a wild flower under an oak tree whose leaves were just started to turn different colors, and the big engine cried with joy. He requested she print the picture out so his driver could carry it for him, and she did. It was his absolute favorite.
1) 6′6″ or 198 centimeters, what a height to be. At second tallest, Henry is the definition of a gentle giant. His resting face looks nervous, but he’s usually not nervous at all. His hair is a forest green, not too short, not too long. Actually, Maddy’s favorite part of him is his chicken-wing bangs. Of course she loves his eyes, which are a lovely jade green, but the bangs take the cake, Whenever they hang out, she likes to play with them when he talks about plants. He finds it comforting. His outfit is literally just a more modest and fancier workman’s outfit, but matching his livery, with his number on his right breast. It made sense, since he was usually one to do heavy work.
“You don’t like the rain either?” ~H
“The last time I went out in the rain I derailed Percy.” ~M
“Why were you even out in the rain!? You’d catch a cold!” ~E
“Fat Man said I was the only one available and told me to suck it up. I did catch a cold. James tried making me soup, remember?” ~M
“What do you mean tried..?” ~H
“He forgot to cook the chicken beforehand. I got salmonella.” ~M
“So that’s why you were bedridden and wouldn’t talk to him for a week after..” ~H
G) Percy
Ah, little shit number two. Thomas’ partner in crime. When he first met Maddy when he arrived, he teased her relentlessly for being short-tempered and short in general. After giving him the silent treatment though, Percy was a bit nicer. He and Thomas still tease her plenty enough, but they tease about things she usually won’t kick their asses for. He likes Maddy now. Plain and simple.
1) Second shortest, 5′5″ or 165 centimeters. He holds those two inches with pride. Percy uses them against Maddy very frequently. Maddy won’t hurt him though. She physically can’t. His little baby face, those big ol’ light green eyes, that short light green hair, his cute little outfit [which consists of a shamrock colored shirt, black suspenders held up by gold buttons, and dark green shorts]. If he was any smaller Maddy would die. James sometimes gets jealous by how much she gushes over Percy, but doesn’t exactly blame her. Percy’s adorable and he damn well knows it.
“Ha, you’re short.” ~P
“You’re short too.” ~M
“I’m taller than you.” ~P
“Won’t be for long when I take your kneecaps.” ~M
H) Emily
Ah, Emily. The first girl engine she met. They made damn good friends, too. They gossiped whenever they had a chance. Maddy usually talked about shit James has said, and Emily just gossips about anything and everything. They were will to throw hands for each other, with Emily more willing to for Maddy. Maddy would throw hands just as an excuse to do it. Emily still loves her, though.
1) Emily currently stands at 5′8″ or 173 centimeters. She isn’t as girly as she looks, either. Her hair is short, with half of it buzzed off. Maddy would describe her as someone punk-ish. Of course Emily’s personality doesn’t reflect that at all, she just chose to look like it. She’s the only other engine besides James to have piercings, usually with two black on on the top of her ears and hoop earrings to pay honor to her engine build. Emily was a little more casual than her friends, usually seen wearing a simple green dress matching her livery. Her eyes were a very dark grey, almost black, with flecks of brass scattered in there. Maddy told her once that she was the prettiest girl she’s every seen and Emily nearly crashed.
“James being a bitch again?” ~Em
“What do you mean again?” ~M
“I can hear you.” ~J
“I know.” ~M
I) Others
Other characters consist of secondary characters within the story who do not play as big a role. There are a few who teeter on the edge between primary and secondary characters, such as Duck, Donald, Douglas, Diesel, Diesel 10, and Lady. They play an important role, but not enough so to have their own descriptions. Diesel’s..y’know, Diesel, the twins think of Maddy as their long-lost sister, Duck..well, they like to poke fun at James together when he’s not droning about the Great Western Railway, Diesel 10′s goal is to get her to say something about Lady, and Lady...no one’s really sure yet. Then, as of right now for true secondary characters there is Oliver, Toad, BoCo, Bill, Ben, Mavis, and Salty. There’s more to come, but that’s what I got right now.
III) Personal Headcanons
-The engines can eat and taste in both forms. They don’t know where it goes when they��re engines and don’t feel like finding out.
-James learned to cook for Maddy when she couldn’t for herself.
-For the longest time, James was the only engine with his own phone.
-He learned hip language and Maddy started regretting every choice in her life.
-Maddy comes to Salty for him to tell her stories when she’s bored.
-Rain is Maddy’s one weakness since she has no way of covering herself.
-She, along with her friends as humans, run with skates that reflect their wheel configuration. The wheels retract when not in use. [I’m thinking about switching to roller blades, we’ll see.]
-Maddy intentionally starts beef with the Scottish Twins because she thinks the fighting is hilarious.
-Thomas will occasionally beg Maddy for a cotton candy sucker. Specifically cotton candy. She doesn’t know why either.
-Thomas initiated a prank war with her once. He lost.
-Gordon once bet her that she couldn’t pull his heavy goods. His driver was out 30 bucks because of him.
-Maddy tortures Duck with duck puns.
-Maddy still trick-or-treats for free candy.
-Emily once convinced Maddy to derail James for the fun of it. She was subsequently chased around the island.
-James is the ultimate flirt and he uses that against Maddy, who flusters very easily.
-Percy loves Teddy Grahams.
-Edward likes loves to tell others about his daughter. Maddy does not. He is becoming too dad-like.
-The Scottish Twins know damn well that Maddy simps for their accents and they intentionally use it against her if they can.
-Maddy knows about Diesel’s ducklings. It’s the only reason she decides to befriend him.
-James utterly hates Diesel for many many reasons.
-Like many others headcanon, Thomas can’t cook. He fucked up a cup of ramen once and Maddy still refuses to let him live it down.
-Edward refuses to let Thomas and Percy swear. They hate it. James and Maddy know this. They swear more because they can’t.
-James and Maddy are at a tie for worst potty mouths. The twins don’t count. That’s not fair.
-Oliver thought Maddy was an engine for like a month before he met her.
-Maddy dislikes the Mainland. Not the engines there. They’re cool.
-If Maddy isn’t around, James sleeps in her bed with her hoodie.
-Henry worries for Maddy all the time. More and Edward and James combined. He just doesn’t show it.
-Gordon says he has no opinion on Maddy, but he really does like her.
-No one knows where Maddy’s really from. She won’t tell them either. Not even James or the Fat Man really know.
-Want more? Just ask!
IV) Canon Couples within TTTE: MBtE
~James/Maddy
~Edward/Henry
~Emily/Thomas
~D10/Lady (In the past)
~~We’ll see about others as the story progresses~~
V) Notes
- Lady is the reason the engines have sentience. She is not the reason for their human forms. That will be explained later.
-Maddy is much more resilient than an average human, which is why most accidents don’t just straight up kill her.
-As stated before, Maddy can now live for hundreds of years if she’s careful enough. She won’t age as fast as a normal human, so who knows how long she’ll be baby-faced. Not that she cares, more opportunity to trick-or-treat.
-The engines can get frisky, but no babies. Don’t even think about it.
-Maddy will eventually give in and buy beds for all her friends to give them an opportunity to sleep like she does.
VI) Link
Silly me, I forgot to give a link to my story! Shame on me for making you search, that won’t happen again, here you go!
Sodor’s New Worker
________________________________________________________________
And that’s really it. If you have any questions, please please please please please ask!
UPDATED: August 3, 2021
#sodor's new worker#TTTE: MBtE#ttte james#ttte maddy#ttte thomas#ttte edward#ttte emily#ttte percy#ttte henry#ttte gordon#ttte oc
27 notes
·
View notes
Text
NSFW Headcanon: Jin Sakai
A = Aftercare (What they’re like after sex)
Jin believes practicing aftercare will naturally develop closer, more intimate bonds with his partner. After sex, he is particularly vulnerable; they’re naked, they have (hopefully) just had an orgasm, and one of the most intrinsic need for him is that need to ensure that positive state of mind continues. Everyone feels good when he knows his partner cares for him, and what better way to show it than tending to his partner when they both are in a vulnerable post-sex state of mind? Jin is especially susceptible to the post-coital blues, and even when he is seemingly highly independent, somewhat repressed and distanced with expressing emotions, I think this will be the perfect time for him to take a plunge and attempt to cuddle and engage in deeper conversations.
B = Body part (Their favourite body part of theirs and also their partner’s)
His entirety? Despite his fears of failure and flaws on his body, Jin Sakai is a man comfortable in his skin. From the crown of his head to the end of his toe, Jin Sakai has a body of a seasoned warrior; as a disciplined samurai, he had learned not only martial arts, but swordsmanship, horse riding, hunting, how to survive in the wilderness with bare essentials, and he literally has zero ounce of excessive fat on his body.
He’s not the strongest, biggest warrior, a powerhouse who can dominate and overwhelm enemies with brute strength, but he’s compact, sculpted with enough muscle definition, and corded with lean strength that only comes from meticulous care. Younger Jin used to hate the scar that would continue to bleed and bruise due to excessive bullying, but now that he is the Ghost, he thinks it only gives him character. After all, scars build character. And out of suffering have emerged the strongest souls; the most massive characters are seared with scars, and Jin Sakai is a prime example of one.
Jin isn’t very particular when it comes to his partner’s favorite body part, but if his partner has anything that contrasts Jin’s own, he would obsess over that and touch him/her over and over. It could be the sensuous curve of the woman’s narrow waistand widening hips, the budding swell of her breasts and slender neck, or another man’s expansive chest and strong arms and legs embracing and cradling him.
C = Cum (Anything to do with cum basically… I’m a disgusting person)
He doesn’t like the mess, and would prefer if he came inside his partner, but the one thing he finds it extremely appealing is coming on his partner’s stomach.
D = Dirty Secret (Pretty self explanatory, a dirty secret of theirs)
Jin loves talking about sex with partners, friends, whoever. To him, sex in essentiality is a fascinating subject that's different for each individual yet common to people all (in some way), and he finds it endlessly depressing that it's a taboo subject.everybody (for the most part) needs sex and wants to have sex, so Jin believes that people should be able to talk about it openly, and he will sass and awkwardly joke and humor with insinuations of sex in normal conversations.
E = Experience (How experienced are they? Do they know what they’re doing?)
He snuck into Clan Sakai and Shimura’s personal archive / library and would sneak in some erotic illustrations of the time in curiosity. Despite the general lack of experience and focusing on his strenuous trainings, he would have fulfilled some curiosity of sexual exploration through masturbation and through secretive excursions with Ryuzo.
F = Favorite Position (This goes without saying. Will probably include a visual)
His preferred positions are; The Victory position, Doggy Style, Shoulder Hold, Lifted Missionary, and Lotus
G = Goofy (Are they more serious in the moment, or are they humorous, etc)
Appearing too serious is Jin Sakai’s greatest flaw; being too serious which is Jin’s principal trait doesn't seem like such a bad thing, but it could create some issues regarding sexual explorations.
Social anxiety.
Perfectionism.
Social awkwardness.
Fight or Flight responses to most things (Can't laugh inconveniences off or smoothly escape conflicts because of over seriousness, which is likely to do the opposite, in other words escalate minor conflicts to big ones).
Overthinking and not living in the moment.
Not having fun due to exaggerated thinking about the consequences.
Jin may be a sassmaster and likes to throw in some dry humor in between, but that’s his coping mechanism to lesson and ease his insecurity and stress that stems from even the sexual act itself, but in the act, he’s deadpan serious.
H = Hair (How well groomed are they, does the carpet match the drapes, etc.)
Judging by the full thatch of his beard, I’d like to think that he’s pretty thick and ample down there as well, peppered with hair below his belly button, and a nice, sizable thatch of his pubic hair.
I = Intimacy (How are they during the moment, romantic aspect…)
Jin does crave intimacy during sex, and this is something which becomes very important to him. Jin is at his most vulnerable, candor, raw, and open, and if it’s not a casual sex only to fulfill the needs to get off than anything else, Jin still needs and wants to build some sort of friendship or connection beforehand. Their sexual performance is then more about action than it is about emotions and deeper layers of intimacy, and with more deeply-connected intimacy, he would rather focus on both the physical and mental connection, which could make it much difficult to come with him. Regardless, he is tender, and will attempt to initiate; especially stroking his partner’s back, the side of his/her face, raking through his/her hair, etc.
J = Jack Off (Masturbation headcanon)
Jin likes the stop-squeeze technique, which is a form of ejaculatory control. It allows him to near the point of climax and then back off suddenly by holding the tip of the penis until the sensation subsides. He likes to do this multiple times to make his orgasm much more intense. While it could be a tedious or time-consuming practice, he likes that explosiveness and exquisite high he gets from it.
K = Kink (One or more of their kinks)
Shibari (kinbaku), aka rope sex: Contrasts are central to Shibari: intricate geometric patterns with the natural curves of the body, rough rope against soft skin and vulnerability side by side with strength. The practice can also lead to a trance-like experience for the tied partner and a rush of adrenalin for the artist, or rigger.
Erotic Asphyxiation (breath play): This type of sexual activity involves intentionally cutting off the air supply for you or your partner with choking, suffocating, and other acts. People who are into breath play say it can heighten sexual arousal and make orgasms more intense.
Dirty Talk: Jin can have a little trouble getting out of his own mind. However, in this case, it’s less about being able to connect to the body than it is a fear of letting go. A little dirty talk goes a long way in making him forget his fears and let loose.
L = Location (Favorite places to do the do)
Taking in consideration of his fugitive life, it would be somewhere relatively hidden and private. Especially in nature; against the tree trunk, near the lake or an ocean when the weather accompanies Jin’s mood, and empty, abandoned houses.
M = Motivation (What turns them on, gets them going)
Jin is almost always turned on, and has higher than normal sex drive. He’s one of those who craves intimacy and wants to share himself with someone special, even though it doesn’t mean that he wouldn’t participate in any given opportunities when they are presented. It can feel like a chore and not really something he wants to waste their time or energy on if they cannot converse well to begin with. There must be underlying honesty and genuinity in order for Jin to at least partake in a casual sex.
N = NO (Something they wouldn’t do, turn offs)
Cockiness – specifically unwarranted arrogance accompanied by a smug attitude. Lack of a sense of humor – unless they’re the one dishing it out. Flaking – because flakes are some of the most unappealing individuals to build any type of relationship with. Being goalless and content with life — having zero aspirations for the future. Liars – but not even about significant stuff. Just unnecessary lies, made up stories and exaggerations when a fib is pointless. Vulgar language finding its way into every, single, sentence spoken. Baseless cattiness, malicious comments and disdain toward others. Humiliation and degradation. BDSM for BDSM’s sake without exploration, caution, and mutual respect.
O = Oral (Preference in giving or receiving, skill, etc)
He’s much more inclined to receive than give. While Jin lacks the scope of experiences, he is skilled with his tongue, very attentive, considerate, and careful to observe his partner’s reaction. Because he is a perfectionist, he will attempt his absolute best to pleasure his partner and send him/her over the edge. He expects the same when he’s on the receiving end.
P = Pace (Are they fast and rough? Slow and sensual? etc.)
The act in itself is viewed essentially as a series of steps to his and his partner’s mutual satisfaction. It entirely depends on their shared needs. As a dominant top, Jin is likely to be a very passionate lover, focused on the connection he gains from this experience. He does appreciate and sees how much closer sex can bring him to someone he loves, and would rather be patient waiting for the right person to share this with, because for him to reach this step, it would have taken a lot of trial and error. He definitely likes things to built up towards the climax, exploring different positions to find their needs satisfied.
Q = Quickie (Their opinions on quickies rather than proper sex, how often, etc.)
Jin actually prefers quickie, because it offers a much-needed opportunity to relieve stress, strengthen a relationship, and get off at a time when intimacy, connection, and, well, time, are luxuries (especially with him on the run). Prefers mutual masturbations, than penetrative sex.
R = Risk (Are they game to experiment, do they take risks, etc.)
Jin is likely to be a very passionate lover, focused on the connection he gains from this experience. He sees how much closer sex can bring him to someone he loves, and would rather be patient waiting for the right person to share this with. If he’s in a long-term relationship, he will be more than willing to experiment and take risks. It all depends on their shared interest, and Jin would be open to try everything at least once.
S = Stamina (How many rounds can they go for, how long do they last…)
From his strenuous training as not only as a samurai, but as the Ghost on the run, Jin has extremely high stamina and will be able to go on for more than a few rounds if his partner is up for it.
T = Toy (Do they own toys? Do they use them? On a partner or themselves?)
Occasionally will use Geisha balls / beaded necklaces for added pleasure, mostly one another in reciprocated masturbations.
U = Unfair (how much they like to tease)
He isn’t very good at teasing, unless it’s with words. He is rather straightforward with his actions, because he doesn’t like to deceive with his affectionate, tender touches.
V = Volume (How loud they are, what sounds they make)
On the quiet side, and for most of the lovemaking, he will make soft, gentle moans that turn into animalistic grunt when he’s on the verge of orgasm.
W = Wild Card (Get a random headcanon for the character of your choice)
Perhaps one of the simplest, yet most potent sexual fantasies Jin has is just having his partner direct the sex script for the night. Whether it's a full-on dominant or simply a partner who knows what he or she wants and how to get it, he finds the thrill of a confident and sexual partner to be very appealing.
X = X-Ray (Let’s see what’s going on in those pants, picture or words)
He is uncircumcised, his shaft is curved slightly upward, with veins that snake along the underside. His member is longer than average (around 13cm when erect) and has considerable girth (9 centimeters when erect).
Y = Yearning (How high is their sex drive?)
Jin has rather active sex drive. It’s not a particularly powerful sex drive, for he could always resort to, and might prefer his own imaginations. His inner minds are rather rich place, and he doesn’t always feel like outwardly expressing this side of himself.
Z = ZZZ (… how quickly they fall asleep afterwards)
All depends on Jin’s condition on that day; judging on the Ghost’s life (on the run, essentially a fugitive ronin), and a slew of traumas and PTSD trailing his back, Jin Sakai suffers from insomnia. While he has high stamina and could go for more than a couple of rounds when he’s in a particularly frisky mood, but one intense round could have him knocked out exhausted. He’s a kind of a guy that sneaks in sleep whenever and however it comes, so he would let himself fade away for an hour or two, before he’s coaxed to awake.
#▬▬ι═══════ﺤ || the storm of clan sakai (headcanon)#(nsfw)#jin sakai#ghost of tsushima#(compiled into one large post)
59 notes
·
View notes
Text
How To Get Your Number Down to Zero (Part 2 of 3)
Unsuccessful/Still Trapped Passengers (Sorted in chronological order)
Amelia’s Problem
(Warning: Covers some depressing subtext in indirect language.)
It seems the turning point in Amelia’s arc was when she gave up after One-One was put back into the control panel and reinstated as the Conductor. Early in her conversation with Tulip afterward, she says: “I don’t want a life without Alrick!” and starts crying. This is probably significant: during the memory scene when people tell her the funeral is starting, she isn’t crying, whimpering, or making obvious signs of distress. In fact, none of her memories shown depict her crying or with obviously sad facial expressions. She might disapprove of crying: when Atticus is hit with the transformation ray and the Steward has Tulip, Tulip cries floods of tears, and the Conductor mockingly says “Aww...no more tears” and wipes away her tears with a handkerchief. In contrast, at the following episode’s start, One-One tells Tulip it's okay to cry, and cry she does. The idea she is habitually against crying, or other displays of sadness, may be furthermore supported by the subtlety of her expressions of sadness in Season 3, Episode 8, even after she’s spent some time improving.
Certainly, the passengers that have reached zero have gotten through great, openly expressed emotional discomfort, which, for most, included substantial crying. It may be that Amelia, in hurrying past her trauma or glossing over her turmoil, refused chances for emotional processing or growth. Removing her from power forced her to change her framework, mourn Alrick, adapt to a life without him, and make amends for all her mistakes.
Grace’s Problem
Desire: A desire for others’ validation, due to a fear of being wrong, disappointing others, and not being enough; needing to avoid being alone. Approach: Repeatedly lying, deceiving, and making stuff up with no basis to gain the approval of others or control them to her ends; creating a cult of children with her as the much-admired leader, hiding things from others to maintain relationships/admiration Character Arc: (Abridged for concision) “I’m the admired leader of the Apex, in which denizens are said to not be real people, and are mere toys created by the train to amuse passengers to do with as they wish, including harming and killing them →my inability to confront my fears and the way of life created from them has made everyone suffer and led me to being alone, despite all my attempts to avoid it. I’m going to undo as much of the harm I caused as I can.”
In Book 2 and early in Book 3, Grace appeared somewhat vain in how she occasionally checked herself out in a compact mirror or in the reflective surface of a denizen’s light. It might be a holdover from wanting to look good for the sake of being validated by others or nor disappointing them, although she is much admired by Apex members, to the point one member even made an outfit much like hers.
Grace was reluctant to tell Simon about her number dropping because she feared Simon would think less of her for it. Though she initially distrusted Tuba and wanted to separate her from Hazel, if not kill her entirely, she gradually revised her opinion of Tuba, and tearfully mourned her death.
It’s possible her number dropped prior to “Le Chat Chalet” because of all the time she had spent being friendly to Hazel, a denizen, although she didn’t even know Hazel was a denizen at the time. It’s unclear whether unintentional or inadvertent character growth also counts in getting a number down.
Her number drops rapidly when she admits her fears while trapped in her memory tape, confronts being wrong, and apologizes to an image of Hazel. She leaves the tape after she raises a hand in goodbye to a memory of Hazel, thus giving her a resolution, unhappy as it is, to that section of her life. When she confronts Simon back at the Apex, she tries to undo the ideology she created and repeatedly tries to save Simon from himself. The endpoints of their arcs are well-summarized by the following exchange:
Grace: "We've been doing it wrong! We can still change!" (down at least three digits) Simon: "Why would I ever want to change if I'm always right?" (up at least five digits)
Simon’s Problem (Speculative):
How Simon got onto the Train is not shown; even supplemental statements by Owen Dennis (of dubious canon; in the same tweet he said the Train is a reality show for aliens) are vague. The following is based on educated guesses.
Problem (Speculative): Insecurity born of unstable attachments, leading to excessive or “clingy” focus on very few people (i.e., Grace); fear of abandonment, fear of being wrong/admitting such. Approach: Gaining secure attachment/fulfilling relationships through Grace; gaining purpose, power, and control by being the second-in-command of the Apex. Character Arc: (Abridged for concision) “I am happy and secure with my relationship with Grace and about my beliefs about denizens and the train’s purpose → Grace betrayed the Apex and me, so I’m not going to listen any more and shall kill her.” (and then he is killed by a Ghom)
It’s much less clear what issues or turmoil got Simon on the Train, because his story before the train isn’t shown, and he doesn’t outright talk about it. Most likely, it has something to do with emotional insecurity, created by or related to unstable attachments, leading to a fear of abandonment (which possibly developed into a desire to enforce “loyalty” in ‘dictator mode’) and, as a product of that, a fear of being wrong or admitting such.
The idea Simon’s problem is related to a fear of being wrong, or admitting it, comes how he not once ever admits to being wrong or doing the wrong thing or apologizes. He very rarely even uses the word “sorry”, much less in a sincere way.3 (When he backs down when Grace tells him to not do something, he typically says “okay” in a subdued voice, not “sorry.”) He doesn’t even make the most paper-thin and perfunctory apology to Hazel for killing Tuba, even seeing how distressed she is, even when told letting Hazel have a funeral has practical benefits. The closest he comes to admitting he was wrong is telling Grace: “You were right not to trust her [Amelia]!” He only acknowledges the possibility Amelia (not a man, as he had assumed) is indeed the “True Conductor” in a hypothetical: “And even if she was [the True Conductor], she’s lost her way!”. Even for a confident and arrogant kind of person, Simon’s habits are extreme.
Judging by how strongly Simon responds to being called "a child", it’s possible that characterization relates to the trauma that put him on the train. Although it’s possible people calling him “a child” in a condescending or mocking way is part of it, the most probable interpretation is that it relates to him being wrong or not knowing what he’s doing. When he leaves The Cat’s chalet in season 3, episode 7, he says: “I’m not a child anymore. I know what I’m doing.”) In the next episode, Amelia aggressively says: “Have you ever considered that you've been wrong? Hah! Of course not! You're a child."
Most likely, he cries upon seeing the “We won’t tell Simon” memory due to a fear of abandonment or betrayal. When Grace saves him, the second sentence he says is “Samantha left me!” as he starts sobbing. (He doesn’t ever wonder where Samantha is or whether she’s safe.) In Season 3, Episode 7, he briefly cries again when recalling how Samantha abandoned him.
Perhaps the most obvious potential turning point in Simon’s arc when when he saw the secret Grace had been keeping from him. He could have concluded many things from this, whether concerning his moral culpability, being wrong about denizens, or using tougher tactics to talk things out with Grace or even friend-dump her, which all had some probability of lowering his number. Instead, he concludes something along the lines of: “In keeping that secret from me, in choosing Hazel over me, Grace betrayed me.”
Another obvious potential turning point is when he exits Grace’s memories and seems numb or regretful of what he’s done. Though he could have undone or minimized the damage then, he only makes a dismissive “hmmph” and walks away. The last point he had to turn back was when he asked why Grace had saved him on the bridge next to the Mall Car (Season 3, Episode 10), and he thought over Grace’s answer of “I don’t know”, only to kick her off the bridge.
Simon, unlike any other passenger shown, doesn’t change his beliefs, values, perspectives, behavior, or even interpersonal skills over the course of his character arc. For all his boldness, for all the emphasis on the people of the Apex being “brave”...his arc ended lethally from his inability to confront his fears and fight through his emotional pain.
It is possible her desire changed between Alrick’s death and some time after getting on the train; she may have initially desired her own death until she believed she could recreate her old life using the train. ↩︎
It’s only an educated guess she was trying to die; what else could she have been planning to do that evening when heading to the university building? However, she does pause in front of the building and seems surprised then it loses its roof. She may have gotten to the roof to investigate why that happened: since the train can modify its appearance to lure in passengers, this makes sense. Tulip tried to walk to Oshkosh at night in a Wisconsin winter with only a light jacket: she was so emotionally distraught as to unwittingly put her in danger of death by hypothermia. Similarly, “in physical danger due to emotional distress” may have matched Amelia’s motive when the train appeared. ↩︎
His line: “Sorry to be the voice of reason again, but there’s no body!” in “The Campfire Car” doesn’t count; it’s exasperation phrased in a way that’s mildly polite or passive-aggressive. In Book 2, he says: "I'm so sorry you two had to see this. I tried to take care of it before you came back." It's not actually apologetic. ↩︎
#Infinity Train#Meta#Analysis#Amelia Hughes#Grace Monroe#Simon Laurent#Character Analysis#Suicide Mention#How to Get Your Number Down to Zero
14 notes
·
View notes
Text
Peer-graded Assignment: Running a Classification Tree
Data
Features are computed from a digitized image of a fine needle aspirate (FNA) of a breast mass [K. P. Bennett and O. L. Mangasarian: "Robust Linear Programming Discrimination of Two Linearly Inseparable Sets", Optimization Methods and Software 1, 1992, 23-34].
Dataset can be found at UCI Machine Learning Repository
In this Assignment the Decision tree has been applied to classification of breast cancer detection.
Attribute Information:
id - ID number
diagnosis (M = malignant, B = benign)
3-32 extra features
Ten real-valued features are computed for each cell nucleus: a) radius (mean of distances from center to points on the perimeter) b) texture (standard deviation of gray-scale values) c) perimeter d) area e) smoothness (local variation in radius lengths) f) compactness (perimeter^2 / area - 1.0) g) concavity (severity of concave portions of the contour) h) concave points (number of concave portions of the contour) i) symmetry j) fractal dimension ("coastline approximation" - 1)
All feature values are recoded with four significant digits. Missing attribute values: none Class distribution: 357 benign, 212 malignant
Results
Generated decision tree can be found below:
In [17]:
img
Out[17]:
Decision tree analysis was performed to test nonlinear relationships among a series of explanatory variables and a binary, categorical response variable (breast cancer diagnosis: malignant or benign).
The dataset was splitted into train and test samples in ratio 70\30.
After fitting the classifier the key metrics were calculated - confusion matrix and accuracy = 0.924. This is a good result for a model trained on a small dataset.
From decision tree we can observe:
The malignant tumor is tend to have much more visible affected areas, texture and concave points, while the benign's characteristics are significantly lower.
The most important features are:
concave points_worst = 0.707688
area_worst = 0.114771
concave points_mean = 0.034234
fractal_dimension_se = 0.026301
texture_worst = 0.026300
area_se = 0.025201
concavity_se = 0.024540
texture_mean = 0.023671
perimeter_mean = 0.010415
concavity_mean = 0.006880
Code
In [1]:
import pandas as pd import numpy as np from sklearn.metrics import * from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn import tree from io import StringIO from IPython.display import Image import pydotplus from sklearn.manifold import TSNE from matplotlib import pyplot as plt %matplotlib inline rnd_state = 23468
Load data
In [2]:
data = pd.read_csv('Data/breast_cancer.csv') data.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 569 entries, 0 to 568 Data columns (total 33 columns): id 569 non-null int64 diagnosis 569 non-null object radius_mean 569 non-null float64 texture_mean 569 non-null float64 perimeter_mean 569 non-null float64 area_mean 569 non-null float64 smoothness_mean 569 non-null float64 compactness_mean 569 non-null float64 concavity_mean 569 non-null float64 concave points_mean 569 non-null float64 symmetry_mean 569 non-null float64 fractal_dimension_mean 569 non-null float64 radius_se 569 non-null float64 texture_se 569 non-null float64 perimeter_se 569 non-null float64 area_se 569 non-null float64 smoothness_se 569 non-null float64 compactness_se 569 non-null float64 concavity_se 569 non-null float64 concave points_se 569 non-null float64 symmetry_se 569 non-null float64 fractal_dimension_se 569 non-null float64 radius_worst 569 non-null float64 texture_worst 569 non-null float64 perimeter_worst 569 non-null float64 area_worst 569 non-null float64 smoothness_worst 569 non-null float64 compactness_worst 569 non-null float64 concavity_worst 569 non-null float64 concave points_worst 569 non-null float64 symmetry_worst 569 non-null float64 fractal_dimension_worst 569 non-null float64 Unnamed: 32 0 non-null float64 dtypes: float64(31), int64(1), object(1) memory usage: 146.8+ KB
Plots
For visualization purposes, the number of dimensions was reduced to two by applying t-SNE method. The plot illustrates that our classes are not clearly divided into two parts, so the nonlinear methods (like Decision tree) may solve this problem.
In [15]:
model = TSNE(random_state=rnd_state, n_components=2) representation = model.fit_transform(data.iloc[:, 2:])
In [16]:
plt.scatter(representation[:, 0], representation[:, 1], c=data.diagnosis, alpha=0.5, cmap=plt.cm.get_cmap('Set1', 2)) plt.colorbar(ticks=range(2));
Decision tree
In [6]:
predictors = data.iloc[:, 2:] target = data.diagnosis
To train a Decision tree the dataset was splitted into train and test samples in proportion 70/30.
In [7]:
(predictors_train, predictors_test, target_train, target_test) = train_test_split(predictors, target, test_size = .3, random_state = rnd_state)
In [8]:
print('predictors_train:', predictors_train.shape) print('predictors_test:', predictors_test.shape) print('target_train:', target_train.shape) print('target_test:', target_test.shape)
predictors_train: (398, 30) predictors_test: (171, 30) target_train: (398,) target_test: (171,)
In [9]:
print(np.sum(target_train==0)) print(np.sum(target_train==1))
253 145
Our train sample is quite balanced, so there is no need in balancing it.
In [10]:
classifier = DecisionTreeClassifier(random_state = rnd_state).fit(predictors_train, target_train)
In [11]:
prediction = classifier.predict(predictors_test)
In [12]:
print('Confusion matrix:\n', pd.crosstab(target_test, prediction, colnames=['Actual'], rownames=['Predicted'], margins=True)) print('\nAccuracy: ', accuracy_score(target_test, prediction))
Confusion matrix: Actual 0 1 All Predicted 0 96 8 104 1 5 62 67 All 101 70 171 Accuracy: 0.9239766081871345
In [13]:
out = StringIO() tree.export_graphviz(classifier, out_file = out, feature_names = predictors_train.columns.values, proportion = True, filled = True) graph = pydotplus.graph_from_dot_data(out.getvalue()) img = Image(data = graph.create_png()) with open('output.png', 'wb') as f: f.write(img.data)
In [14]:
feature_importance = pd.Series(classifier.feature_importances_, index=data.columns.values[2:]).sort_values(ascending=False) feature_importance
Out[14]:
concave points_worst 0.707688 area_worst 0.114771 concave points_mean 0.034234 fractal_dimension_se 0.026301 texture_worst 0.026300 area_se 0.025201 concavity_se 0.024540 texture_mean 0.023671 perimeter_mean 0.010415 concavity_mean 0.006880 fractal_dimension_worst 0.000000 fractal_dimension_mean 0.000000 symmetry_mean 0.000000 compactness_mean 0.000000 texture_se 0.000000 smoothness_mean 0.000000 area_mean 0.000000 radius_se 0.000000 smoothness_se 0.000000 perimeter_se 0.000000 symmetry_worst 0.000000 compactness_se 0.000000 concave points_se 0.000000 symmetry_se 0.000000 radius_worst 0.000000 perimeter_worst 0.000000 smoothness_worst 0.000000 compactness_worst 0.000000 concavity_worst 0.000000 radius_mean 0.000000 dtype: float64
1 note
·
View note
Text
Running A Classification Tree
Task
This week’s assignment involves decision trees, and more specifically, classification trees. Decision trees are predictive models that allow for a data driven exploration of nonlinear relationships and interactions among many explanatory variables in predicting a response or target variable. When the response variable is categorical (two levels), the model is a called a classification tree. Explanatory variables can be either quantitative, categorical or both. Decision trees create segmentations or subgroups in the data, by applying a series of simple rules or criteria over and over again which choose variable constellations that best predict the response (i.e. target) variable.
Run a Classification Tree.
You will need to perform a decision tree analysis to test nonlinear relationships among a series of explanatory variables and a binary, categorical response variable.
Data
Features are computed from a digitized image of a fine needle aspirate (FNA) of a breast mass [K. P. Bennett and O. L. Mangasarian: "Robust Linear Programming Discrimination of Two Linearly Inseparable Sets", Optimization Methods and Software 1, 1992, 23-34].
Dataset can be found at UCI Machine Learning Repository
In this Assignment the Decision tree has been applied to classification of breast cancer detection.
Attribute Information:
id - ID number
diagnosis (M = malignant, B = benign)
3-32 extra features
Ten real-valued features are computed for each cell nucleus: a) radius (mean of distances from center to points on the perimeter) b) texture (standard deviation of gray-scale values) c) perimeter d) area e) smoothness (local variation in radius lengths) f) compactness (perimeter^2 / area - 1.0) g) concavity (severity of concave portions of the contour) h) concave points (number of concave portions of the contour) i) symmetry j) fractal dimension ("coastline approximation" - 1)
All feature values are recoded with four significant digits. Missing attribute values: none Class distribution: 357 benign, 212 malignant
Results
Generated decision tree can be found below:
In [17]:
img
Out[17]:
Decision tree analysis was performed to test nonlinear relationships among a series of explanatory variables and a binary, categorical response variable (breast cancer diagnosis: malignant or benign).
The dataset was splitted into train and test samples in ratio 70\30.
After fitting the classifier the key metrics were calculated - confusion matrix and accuracy = 0.924. This is a good result for a model trained on a small dataset.
From decision tree we can observe:
The malignant tumor is tend to have much more visible affected areas, texture and concave points, while the benign's characteristics are significantly lower.
The most important features are:
concave points_worst = 0.707688
area_worst = 0.114771
concave points_mean = 0.034234
fractal_dimension_se = 0.026301
texture_worst = 0.026300
area_se = 0.025201
concavity_se = 0.024540
texture_mean = 0.023671
perimeter_mean = 0.010415
concavity_mean = 0.006880
Code
In [1]:
import pandas as pd import numpy as np from sklearn.metrics import * from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn import tree from io import StringIO from IPython.display import Image import pydotplus from sklearn.manifold import TSNE from matplotlib import pyplot as plt %matplotlib inline rnd_state = 23468
Load data
In [2]:
data = pd.read_csv('Data/breast_cancer.csv') data.info()
In the output above there is an empty column 'Unnamed: 32', so next it should be dropped.
In [3]:
data.drop('Unnamed: 32', axis=1, inplace=True) data.diagnosis = np.where(data.diagnosis=='M', 1, 0) # Decode diagnosis into binary data.describe()
Out[3]:
8 rows × 32 columns
In [4]:
data.head()
Out[4]:
5 rows × 32 columns
Plots
For visualization purposes, the number of dimensions was reduced to two by applying t-SNE method. The plot illustrates that our classes are not clearly divided into two parts, so the nonlinear methods (like Decision tree) may solve this problem.
In [15]:
model = TSNE(random_state=rnd_state, n_components=2) representation = model.fit_transform(data.iloc[:, 2:])
In [16]:
plt.scatter(representation[:, 0], representation[:, 1], c=data.diagnosis, alpha=0.5, cmap=plt.cm.get_cmap('Set1', 2)) plt.colorbar(ticks=range(2));
Decision tree
In [6]:
predictors = data.iloc[:, 2:] target = data.diagnosis
To train a Decision tree the dataset was splitted into train and test samples in proportion 70/30.
In [7]:
(predictors_train, predictors_test, target_train, target_test) = train_test_split(predictors, target, test_size = .3, random_state = rnd_state)
In [8]:
print('predictors_train:', predictors_train.shape) print('predictors_test:', predictors_test.shape) print('target_train:', target_train.shape) print('target_test:', target_test.shape)
predictors_train: (398, 30) predictors_test: (171, 30) target_train: (398,) target_test: (171,)
In [9]:
print(np.sum(target_train==0)) print(np.sum(target_train==1))
253 145
Our train sample is quite balanced, so there is no need in balancing it.
In [10]:
classifier = DecisionTreeClassifier(random_state = rnd_state).fit(predictors_train, target_train)
In [11]:
prediction = classifier.predict(predictors_test)
In [12]:
print('Confusion matrix:\n', pd.crosstab(target_test, prediction, colnames=['Actual'], rownames=['Predicted'], margins=True)) print('\nAccuracy: ', accuracy_score(target_test, prediction))
Confusion matrix: Actual 0 1 All Predicted 0 96 8 104 1 5 62 67 All 101 70 171 Accuracy: 0.9239766081871345
In [13]:
out = StringIO() tree.export_graphviz(classifier, out_file = out, feature_names = predictors_train.columns.values, proportion = True, filled = True) graph = pydotplus.graph_from_dot_data(out.getvalue()) img = Image(data = graph.create_png()) with open('output.png', 'wb') as f: f.write(img.data)
In [14]:
feature_importance = pd.Series(classifier.feature_importances_, index=data.columns.values[2:]).sort_values(ascending=False) feature_importance
Out[14]:
1 note
·
View note
Text
This week’s assignment involves decision trees, and more specifically, classification trees. Decision trees are predictive models that allow for a data driven exploration of nonlinear relationships and interactions among many explanatory variables in predicting a response or target variable. When the response variable is categorical (two levels), the model is a called a classification tree. Explanatory variables can be either quantitative, categorical or both. Decision trees create segmentations or subgroups in the data, by applying a series of simple rules or criteria over and over again which choose variable constellations that best predict the response (i.e. target) variable.
Run a Classification Tree.
You will need to perform a decision tree analysis to test nonlinear relationships among a series of explanatory variables and a binary, categorical response variable.
Data
Features are computed from a digitized image of a fine needle aspirate (FNA) of a breast mass [K. P. Bennett and O. L. Mangasarian: "Robust Linear Programming Discrimination of Two Linearly Inseparable Sets", Optimization Methods and Software 1, 1992, 23-34].
Dataset can be found at UCI Machine Learning Repository
In this Assignment the Decision tree has been applied to classification of breast cancer detection.
Attribute Information:
id - ID number
diagnosis (M = malignant, B = benign)
3-32 extra features
Ten real-valued features are computed for each cell nucleus: a) radius (mean of distances from center to points on the perimeter) b) texture (standard deviation of gray-scale values) c) perimeter d) area e) smoothness (local variation in radius lengths) f) compactness (perimeter^2 / area - 1.0) g) concavity (severity of concave portions of the contour) h) concave points (number of concave portions of the contour) i) symmetry j) fractal dimension ("coastline approximation" - 1)
All feature values are recoded with four significant digits. Missing attribute values: none Class distribution: 357 benign, 212 malignant
Results
Generated decision tree can be found below:
In [17]:
img
Out[17]:
Decision tree analysis was performed to test nonlinear relationships among a series of explanatory variables and a binary, categorical response variable (breast cancer diagnosis: malignant or benign).
The dataset was splitted into train and test samples in ratio 70\30.
After fitting the classifier the key metrics were calculated - confusion matrix and accuracy = 0.924. This is a good result for a model trained on a small dataset.
From decision tree we can observe:
The malignant tumor is tend to have much more visible affected areas, texture and concave points, while the benign's characteristics are significantly lower.
The most important features are:
concave points_worst = 0.707688
area_worst = 0.114771
concave points_mean = 0.034234
fractal_dimension_se = 0.026301
texture_worst = 0.026300
area_se = 0.025201
concavity_se = 0.024540
texture_mean = 0.023671
perimeter_mean = 0.010415
concavity_mean = 0.006880
Code
In [1]:
import pandas as pd import numpy as np from sklearn.metrics import * from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn import tree from io import StringIO from IPython.display import Image import pydotplus from sklearn.manifold import TSNE from matplotlib import pyplot as plt %matplotlib inline rnd_state = 23468
Load data
In [2]:
data = pd.read_csv('Data/breast_cancer.csv') data.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 569 entries, 0 to 568 Data columns (total 33 columns): id 569 non-null int64 diagnosis 569 non-null object radius_mean 569 non-null float64 texture_mean 569 non-null float64 perimeter_mean 569 non-null float64 area_mean 569 non-null float64 smoothness_mean 569 non-null float64 compactness_mean 569 non-null float64 concavity_mean 569 non-null float64 concave points_mean 569 non-null float64 symmetry_mean 569 non-null float64 fractal_dimension_mean 569 non-null float64 radius_se 569 non-null float64 texture_se 569 non-null float64 perimeter_se 569 non-null float64 area_se 569 non-null float64 smoothness_se 569 non-null float64 compactness_se 569 non-null float64 concavity_se 569 non-null float64 concave points_se 569 non-null float64 symmetry_se 569 non-null float64 fractal_dimension_se 569 non-null float64 radius_worst 569 non-null float64 texture_worst 569 non-null float64 perimeter_worst 569 non-null float64 area_worst 569 non-null float64 smoothness_worst 569 non-null float64 compactness_worst 569 non-null float64 concavity_worst 569 non-null float64 concave points_worst 569 non-null float64 symmetry_worst 569 non-null float64 fractal_dimension_worst 569 non-null float64 Unnamed: 32 0 non-null float64 dtypes: float64(31), int64(1), object(1) memory usage: 146.8+ KB
In the output above there is an empty column 'Unnamed: 32', so next it should be dropped.
In [3]:
data.drop('Unnamed: 32', axis=1, inplace=True) data.diagnosis = np.where(data.diagnosis=='M', 1, 0) # Decode diagnosis into binary data.describe()
Out[3]:iddiagnosisradius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_mean...radius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worst
count5.690000e+02569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000...569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000
mean3.037183e+070.37258314.12729219.28964991.969033654.8891040.0963600.1043410.0887990.048919...16.26919025.677223107.261213880.5831280.1323690.2542650.2721880.1146060.2900760.083946
std1.250206e+080.4839183.5240494.30103624.298981351.9141290.0140640.0528130.0797200.038803...4.8332426.14625833.602542569.3569930.0228320.1573360.2086240.0657320.0618670.018061
min8.670000e+030.0000006.9810009.71000043.790000143.5000000.0526300.0193800.0000000.000000...7.93000012.02000050.410000185.2000000.0711700.0272900.0000000.0000000.1565000.055040
25%8.692180e+050.00000011.70000016.17000075.170000420.3000000.0863700.0649200.0295600.020310...13.01000021.08000084.110000515.3000000.1166000.1472000.1145000.0649300.2504000.071460
50%9.060240e+050.00000013.37000018.84000086.240000551.1000000.0958700.0926300.0615400.033500...14.97000025.41000097.660000686.5000000.1313000.2119000.2267000.0999300.2822000.080040
75%8.813129e+061.00000015.78000021.800000104.100000782.7000000.1053000.1304000.1307000.074000...18.79000029.720000125.4000001084.0000000.1460000.3391000.3829000.1614000.3179000.092080
max9.113205e+081.00000028.11000039.280000188.5000002501.0000000.1634000.3454000.4268000.201200...36.04000049.540000251.2000004254.0000000.2226001.0580001.2520000.2910000.6638000.207500
8 rows × 32 columns
In [4]:
data.head()
Out[4]:iddiagnosisradius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_mean...radius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worst
0842302117.9910.38122.801001.00.118400.277600.30010.14710...25.3817.33184.602019.00.16220.66560.71190.26540.46010.11890
1842517120.5717.77132.901326.00.084740.078640.08690.07017...24.9923.41158.801956.00.12380.18660.24160.18600.27500.08902
284300903119.6921.25130.001203.00.109600.159900.19740.12790...23.5725.53152.501709.00.14440.42450.45040.24300.36130.08758
384348301111.4220.3877.58386.10.142500.283900.24140.10520...14.9126.5098.87567.70.20980.86630.68690.25750.66380.17300
484358402120.2914.34135.101297.00.100300.132800.19800.10430...22.5416.67152.201575.00.13740.20500.40000.16250.23640.07678
5 rows × 32 columns
Plots
For visualization purposes, the number of dimensions was reduced to two by applying t-SNE method. The plot illustrates that our classes are not clearly divided into two parts, so the nonlinear methods (like Decision tree) may solve this problem.
In [15]:
model = TSNE(random_state=rnd_state, n_components=2) representation = model.fit_transform(data.iloc[:, 2:])
In [16]:
plt.scatter(representation[:, 0], representation[:, 1], c=data.diagnosis, alpha=0.5, cmap=plt.cm.get_cmap('Set1', 2)) plt.colorbar(ticks=range(2));
Decision tree
In [6]:
predictors = data.iloc[:, 2:] target = data.diagnosis
To train a Decision tree the dataset was splitted into train and test samples in proportion 70/30.
In [7]:
(predictors_train, predictors_test, target_train, target_test) = train_test_split(predictors, target, test_size = .3, random_state = rnd_state)
In [8]:
print('predictors_train:', predictors_train.shape) print('predictors_test:', predictors_test.shape) print('target_train:', target_train.shape) print('target_test:', target_test.shape)
predictors_train: (398, 30) predictors_test: (171, 30) target_train: (398,) target_test: (171,)
In [9]:
print(np.sum(target_train==0)) print(np.sum(target_train==1))
253 145
Our train sample is quite balanced, so there is no need in balancing it.
In [10]:
classifier = DecisionTreeClassifier(random_state = rnd_state).fit(predictors_train, target_train)
In [11]:
prediction = classifier.predict(predictors_test)
In [12]:
print('Confusion matrix:\n', pd.crosstab(target_test, prediction, colnames=['Actual'], rownames=['Predicted'], margins=True)) print('\nAccuracy: ', accuracy_score(target_test, prediction))
Confusion matrix: Actual 0 1 All Predicted 0 96 8 104 1 5 62 67 All 101 70 171 Accuracy: 0.9239766081871345
In [13]:
out = StringIO() tree.export_graphviz(classifier, out_file = out, feature_names = predictors_train.columns.values, proportion = True, filled = True) graph = pydotplus.graph_from_dot_data(out.getvalue()) img = Image(data = graph.create_png()) with open('output.png', 'wb') as f: f.write(img.data)
In [14]:
feature_importance = pd.Series(classifier.feature_importances_, index=data.columns.values[2:]).sort_values(ascending=False) feature_importance
Out[14]:
concave points_worst 0.707688 area_worst 0.114771 concave points_mean 0.034234 fractal_dimension_se 0.026301 texture_worst 0.026300 area_se 0.025201 concavity_se 0.024540 texture_mean 0.023671 perimeter_mean 0.010415 concavity_mean 0.006880 fractal_dimension_worst 0.000000 fractal_dimension_mean 0.000000 symmetry_mean 0.000000 compactness_mean 0.000000 texture_se 0.000000 smoothness_mean 0.000000 area_mean 0.000000 radius_se 0.000000 smoothness_se 0.000000 perimeter_se 0.000000 symmetry_worst 0.000000 compactness_se 0.000000 concave points_se 0.000000 symmetry_se 0.000000 radius_worst 0.000000 perimeter_worst 0.000000 smoothness_worst 0.000000 compactness_worst 0.000000 concavity_worst 0.000000 radius_mean 0.000000 dtype: float64
1 note
·
View note
Text
B A S I C S Full Name: C’arha - Daughter of Noyoh Pronunciation: Kar - uh Nicknames: Arha, Lil Lily, Pretty One, Runt, Flowery Cat, Little Sun, Gremlin, Bastard, etc! Height: 4 fulms, 10 ilms Age: 25 Summers Old ( 26 on July 30th ) Zodiac: Leo Languages: Coeurl ( Tongue of the Sun/Moon ), Huntspeak, Common, Sanskrit, Thavnairian and some Xaelic. P H Y S I C A L | C H A R A C T E R I S T I C S Hair Colour: Chestnut Eye Colour: Neon Green Skin Tone: Tan Body Type: Pear Shaped; Surprisingly Muscular and Compact Accent: A thick middle eastern accent that borders on Thavnairian and something else. Dominant Hand: Ambidextrous Posture: Slack and lazy, appearing deceptively sleepy. OR, challenging with her chin ticked higher. Scars: Grotesque, raised lash marks ruin her back from the back of her neck down to her hips. They obscure about 85% of her leopard spot tattoos. Discoloration on the center of her chest and right shoulder from burns. Tattoos: Leopard spots that start at the back of her neck and run to the base of her tail. They fade around the edges and do not extend down her arms or legs. Most Noticeable Features: Small, semi-round ears and a stub tail that sticks out 3-4 inches from her body. Wild, sleep mussed hair that usually goes unbrushed or uncombed. Bright, nearly fluorescent green eyes that glow almost yellow in the dark. Chun Li thighs that can and will snap your neck paired with freckled skin. C H I L D H O O D Place of Birth: Ala Mhigo, Gyr Abania Hometown: Ala Gannha, Gyr Abania Birth Weight / Height: 5 ponze, 9 onzes ( She is the runt of the litter. ) Manner of Birth: Natural First words: “Paba.” Siblings: An older brother named C’oto and a middle brother named C’oxhi that died during the Garlean siege of Ala Gannha. The youngest brother named C’inx that was murdered a year ago by an ex-lover. Parents: C’yn was her father who also perished in the Garlean siege on Ala Gannha. C’ohna is her adoptive mother who has taken care of her since C’mayan gave her up at birth. ( C’arha doesn’t know this. ) Parental Involvement: C’arha was born of C’mayan, the tribe chieftess and previous Jali in the city-state of Ala Mhigo while the woman was on errand within the Lochs. C’mayan and C’yn, C’ohna’s husband, had very knowingly been having affairs with one another while C’ohna was busy raising the Ankobia’s children. Once C’arha was born, C’mayan panicked at the new weight of being a mother as well as having to remain the tribe chieftess and raise the next Jali--previously believing that she would be able to handle the stress. The two fled home to the village and came clean to C’ohna, who held more sympathy for the child than the two adults who had so recklessly engaged in bringing into this world. She offered to adopt C’arha under the condition that the girl never be told of the real mother and that C’mayan remain a constant in her life as an aunt and guide. C’arha grew up in a loving home, cared for deeply by her now adoptive mother and her father that treated his only daughter like she was god’s gift to mankind. C’mayan regrets giving up her child but agrees that C’arha had the best life she could have had with C’ohna as her mother.
A D U L T | L I F E Occupation: Jali/’Bardpriest’, Mistress of the Haughty Mason, Fist of Rhalgr, Drug and Weapon Smuggler, Assassin. Current Residence: A portion of her time is spend in Ala Gannha with her tribe, another portion is spent in the Lavender Beds where she hosts events for the Haughty Mason and the third portion of her time is spent between Ala Mhigo and Rhalgr’s Reach handling shipments, meeting with informants and training. Relationship Status: Polyamorous and Open Relationship ( Love is a bitter, jaded topic for her. Proceed at your own caution and expect nothing. ) Current Lovers: Elodea Inarch and Zurri Isyal Y’zareen Serhan and Arden Tide ( Divorced ) Damien Takayama Kaua Financial Status: Very well off. The Haughty Mason does well to put gil in her pockets. Driver’s License: She ate the last chocobo that was ‘legally’ hers. She owns a tamed coeurl. That’s enough. Vices: Excessive Alcoholism and Drug Usage, Possessive Habits and a Penchant for Dining on the Flesh of Man. S E X & R O M A N C E Sexual Orientation: Bisexual Romantic Orientation: Demiromantic ( Aromantic Leaning ) Preferred Emotional Role: submissive | dominant | switch | unsure Preferred Sexual Role: submissive | dominant | switch | sex repulsed ( Sex is the very basis of a whole truck load of trauma for C’arha. Because of this, she very rarely will engage with strangers and with cis men she MUST be the dominant leading the session. Only with extensive trust, time and patience is anything else even remotely possible. If your cis male character attempts to top her during sex she WILL get up and leave mid session. Please be advised that if you’re lookin’ for a one night stand, C’arha isn’t the one! ) Libido: Moderate to High; Excessively High only when experiencing her heat. Turn On’s: Respect and Patience, a good and attentive listener, confidence in one’s image/personality/abilities, authority figures, physical prowess, the thrill and threat of death/excessive bodily harm, mutual understanding, a sense of humor and world experience. Turn Off’s: Disrespected boundaries, forced or assumed physical touch/affection/relationships/sex, overly macho/pushy personalities, liars, ‘hero/savior’ complexes, being made fun of for being naive/ignorant, irredeemable ignorance, pure or complete innocence, lack of survival skills and GARLEANS!!! Love Language: Prophetic philosophical debates and conversations surrounding life. Song and elaborate dance in their honor. Gift giving of fresh flowers or sweets. Vulnerability. Relationship Tendencies: An impossible lover to some and a breath of fresh air lover to others. She is Mother Earth and caring for you is the sunlight she needs to flourish in her own right. Her emotions are a flash flood or a desert storm, never anything in-between. She is too much and not enough. Her heart means well but trauma and so much fear make her the hardest to really get close to, to really understand how she functions. The reward, however?; The sunlight in all her infinite, burning glory. M I S C E L L A N E O U S Hobbies to Pass the Time: Gardening, training for extensive hours or until she faints, cooking or baking to feed her loved ones, singing, dancing, exploring new areas of Eorzea/Othard and charting her progress, metalworking, getting lost in a particularly careful hunt, engaging in stimulating conversations about the universe, people-watching, day dreaming on long walks through the Shroud or the La Noscean Jungle, practicing her calligraphy and taming Coeurl. Mental Illnesses: Bipolar Disorder, Depression and PTSD. Physical Illnesses: Alcoholism, Chronic Fatigue, Hanahaki Disease and Severe Insomnia. Left or Right Brained: Right Fears: Jauhar, drowning, being pinned by a man, letting down the pack, disrespecting Rhalgr’s will, losing Tolemy, Ayanga or Elodea, Self Confidence Level: Low to Moderate; She’s FANTASTIC at pretending to be confident. Vulnerabilities: All of the sexual/emotional trauma that makes romance and relationships nearly impossible, exploiting her blind devotion to Rhalgr’s Will, Tolemy, any one of her lovers or her pack’s safety and well being, any cruel injustices toward children, any cruel injustices toward anyone considered feral, exposing her false self of identity and the back of her neck. Tagged by: No One! Tagging: Anyone who reads this and would like to do it!
58 notes
·
View notes
Text
Task
This week’s assignment involves decision trees, and more specifically, classification trees. Decision trees are predictive models that allow for a data driven exploration of nonlinear relationships and interactions among many explanatory variables in predicting a response or target variable. When the response variable is categorical (two levels), the model is a called a classification tree. Explanatory variables can be either quantitative, categorical or both. Decision trees create segmentations or subgroups in the data, by applying a series of simple rules or criteria over and over again which choose variable constellations that best predict the response (i.e. target) variable.
Run a Classification Tree.
You will need to perform a decision tree analysis to test nonlinear relationships among a series of explanatory variables and a binary, categorical response variable.
Data
Features are computed from a digitized image of a fine needle aspirate (FNA) of a breast mass [K. P. Bennett and O. L. Mangasarian: "Robust Linear Programming Discrimination of Two Linearly Inseparable Sets", Optimization Methods and Software 1, 1992, 23-34].
Dataset can be found at UCI Machine Learning Repository
In this Assignment the Decision tree has been applied to classification of breast cancer detection.
Attribute Information:
id - ID number
diagnosis (M = malignant, B = benign)
3-32 extra features
Ten real-valued features are computed for each cell nucleus: a) radius (mean of distances from center to points on the perimeter) b) texture (standard deviation of gray-scale values) c) perimeter d) area e) smoothness (local variation in radius lengths) f) compactness (perimeter^2 / area - 1.0) g) concavity (severity of concave portions of the contour) h) concave points (number of concave portions of the contour) i) symmetry j) fractal dimension ("coastline approximation" - 1)
All feature values are recoded with four significant digits. Missing attribute values: none Class distribution: 357 benign, 212 malignant
Results
Generated decision tree can be found below:
In [17]:img
Out[17]:
Decision tree analysis was performed to test nonlinear relationships among a series of explanatory variables and a binary, categorical response variable (breast cancer diagnosis: malignant or benign).
The dataset was splitted into train and test samples in ratio 70\30.
After fitting the classifier the key metrics were calculated - confusion matrix and accuracy = 0.924. This is a good result for a model trained on a small dataset.
From decision tree we can observe:
The malignant tumor is tend to have much more visible affected areas, texture and concave points, while the benign's characteristics are significantly lower.
The most important features are:
concave points_worst = 0.707688
area_worst = 0.114771
concave points_mean = 0.034234
fractal_dimension_se = 0.026301
texture_worst = 0.026300
area_se = 0.025201
concavity_se = 0.024540
texture_mean = 0.023671
perimeter_mean = 0.010415
concavity_mean = 0.006880
Code
In [1]:import pandas as pd import numpy as np from sklearn.metrics import*from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn import tree from io import StringIO from IPython.display import Image import pydotplus from sklearn.manifold import TSNE from matplotlib import pyplot as plt %matplotlib inline rnd_state = 23468
Load data
In [2]:data = pd.read_csv('Data/breast_cancer.csv') data.info() RangeIndex: 569 entries, 0 to 568 Data columns (total 33 columns): id 569 non-null int64 diagnosis 569 non-null object radius_mean 569 non-null float64 texture_mean 569 non-null float64 perimeter_mean 569 non-null float64 area_mean 569 non-null float64 smoothness_mean 569 non-null float64 compactness_mean 569 non-null float64 concavity_mean 569 non-null float64 concave points_mean 569 non-null float64 symmetry_mean 569 non-null float64 fractal_dimension_mean 569 non-null float64 radius_se 569 non-null float64 texture_se 569 non-null float64 perimeter_se 569 non-null float64 area_se 569 non-null float64 smoothness_se 569 non-null float64 compactness_se 569 non-null float64 concavity_se 569 non-null float64 concave points_se 569 non-null float64 symmetry_se 569 non-null float64 fractal_dimension_se 569 non-null float64 radius_worst 569 non-null float64 texture_worst 569 non-null float64 perimeter_worst 569 non-null float64 area_worst 569 non-null float64 smoothness_worst 569 non-null float64 compactness_worst 569 non-null float64 concavity_worst 569 non-null float64 concave points_worst 569 non-null float64 symmetry_worst 569 non-null float64 fractal_dimension_worst 569 non-null float64 Unnamed: 32 0 non-null float64 dtypes: float64(31), int64(1), object(1) memory usage: 146.8+ KB
In the output above there is an empty column 'Unnamed: 32', so next it should be dropped.
In [3]:data.drop('Unnamed: 32', axis=1, inplace=True) data.diagnosis = np.where(data.diagnosis=='M', 1, 0) # Decode diagnosis into binary data.describe()
Out[3]:iddiagnosisradius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_mean...radius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worstcount5.690000e+02569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000...569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000mean3.037183e+070.37258314.12729219.28964991.969033654.8891040.0963600.1043410.0887990.048919...16.26919025.677223107.261213880.5831280.1323690.2542650.2721880.1146060.2900760.083946std1.250206e+080.4839183.5240494.30103624.298981351.9141290.0140640.0528130.0797200.038803...4.8332426.14625833.602542569.3569930.0228320.1573360.2086240.0657320.0618670.018061min8.670000e+030.0000006.9810009.71000043.790000143.5000000.0526300.0193800.0000000.000000...7.93000012.02000050.410000185.2000000.0711700.0272900.0000000.0000000.1565000.05504025%8.692180e+050.00000011.70000016.17000075.170000420.3000000.0863700.0649200.0295600.020310...13.01000021.08000084.110000515.3000000.1166000.1472000.1145000.0649300.2504000.07146050%9.060240e+050.00000013.37000018.84000086.240000551.1000000.0958700.0926300.0615400.033500...14.97000025.41000097.660000686.5000000.1313000.2119000.2267000.0999300.2822000.08004075%8.813129e+061.00000015.78000021.800000104.100000782.7000000.1053000.1304000.1307000.074000...18.79000029.720000125.4000001084.0000000.1460000.3391000.3829000.1614000.3179000.092080max9.113205e+081.00000028.11000039.280000188.5000002501.0000000.1634000.3454000.4268000.201200...36.04000049.540000251.2000004254.0000000.2226001.0580001.2520000.2910000.6638000.207500
8 rows × 32 columns
In [4]:data.head()
Out[4]:iddiagnosisradius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_mean...radius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worst0842302117.9910.38122.801001.00.118400.277600.30010.14710...25.3817.33184.602019.00.16220.66560.71190.26540.46010.118901842517120.5717.77132.901326.00.084740.078640.08690.07017...24.9923.41158.801956.00.12380.18660.24160.18600.27500.08902284300903119.6921.25130.001203.00.109600.159900.19740.12790...23.5725.53152.501709.00.14440.42450.45040.24300.36130.08758384348301111.4220.3877.58386.10.142500.283900.24140.10520...14.9126.5098.87567.70.20980.86630.68690.25750.66380.17300484358402120.2914.34135.101297.00.100300.132800.19800.10430...22.5416.67152.201575.00.13740.20500.40000.16250.23640.07678
5 rows × 32 columns
Plots
For visualization purposes, the number of dimensions was reduced to two by applying t-SNE method. The plot illustrates that our classes are not clearly divided into two parts, so the nonlinear methods (like Decision tree) may solve this problem.
In [15]:model = TSNE(random_state=rnd_state, n_components=2) representation = model.fit_transform(data.iloc[:, 2:])
In [16]:plt.scatter(representation[:, 0], representation[:, 1], c=data.diagnosis, alpha=0.5, cmap=plt.cm.get_cmap('Set1', 2)) plt.colorbar(ticks=range(2));
Decision tree
In [6]:predictors = data.iloc[:, 2:] target = data.diagnosis
To train a Decision tree the dataset was splitted into train and test samples in proportion 70/30.
In [7]:(predictors_train, predictors_test, target_train, target_test) = train_test_split(predictors, target, test_size = .3, random_state = rnd_state)
In [8]:print('predictors_train:', predictors_train.shape) print('predictors_test:', predictors_test.shape) print('target_train:', target_train.shape) print('target_test:', target_test.shape) predictors_train: (398, 30) predictors_test: (171, 30) target_train: (398,) target_test: (171,)
In [9]:print(np.sum(target_train==0)) print(np.sum(target_train==1)) 253 145
Our train sample is quite balanced, so there is no need in balancing it.
In [10]:classifier = DecisionTreeClassifier(random_state = rnd_state).fit(predictors_train, target_train)
In [11]:prediction = classifier.predict(predictors_test)
In [12]:print('Confusion matrix:\n', pd.crosstab(target_test, prediction, colnames=['Actual'], rownames=['Predicted'], margins=True)) print('\nAccuracy: ', accuracy_score(target_test, prediction)) Confusion matrix: Actual 0 1 All Predicted 0 96 8 104 1 5 62 67 All 101 70 171 Accuracy: 0.9239766081871345
In [13]:out = StringIO() tree.export_graphviz(classifier, out_file = out, feature_names = predictors_train.columns.values, proportion =True, filled =True) graph = pydotplus.graph_from_dot_data(out.getvalue()) img = Image(data = graph.create_png()) with open('output.png', 'wb') as f: f.write(img.data)
In [14]:feature_importance = pd.Series(classifier.feature_importances_, index=data.columns.values[2:]).sort_values(ascending=False) feature_importance
Out[14]:concave points_worst 0.707688 area_worst 0.114771 concave points_mean 0.034234 fractal_dimension_se 0.026301 texture_worst 0.026300 area_se 0.025201 concavity_se 0.024540 texture_mean 0.023671 perimeter_mean 0.010415 concavity_mean 0.006880 fractal_dimension_worst 0.000000 fractal_dimension_mean 0.000000 symmetry_mean 0.000000 compactness_mean 0.000000 texture_se 0.000000 smoothness_mean 0.000000 area_mean 0.000000 radius_se 0.000000 smoothness_se 0.000000 perimeter_se 0.000000 symmetry_worst 0.000000 compactness_se 0.000000 concave points_se 0.000000 symmetry_se 0.000000 radius_worst 0.000000 perimeter_worst 0.000000 smoothness_worst 0.000000 compactness_worst 0.000000 concavity_worst 0.000000 radius_mean 0.000000 dtype: float64
1 note
·
View note